當輸入n
時, 以客戶端執行
輸入y
, 以服務端執行
"""udp聊天器, 單工模擬"""
def__init__
(self, is_server=
true
, ip=
"127.0.0.1"
, port=
8088):
# 是否為服務端
self.is_server = is_server
# 要傳送訊息的目標位址
self.destination_address =
(ip, port)
# 建立udp套接字
self.udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)
# 繫結位址資訊
bind_address =
(ip, port)
# 當作為服務端執行時, 繫結
if self.is_server:
# 繫結ip和埠
self.udp_socket.bind(bind_address)
defsend_message
(self)
:"""傳送資訊"""
# 要傳送的字串資訊
send_str =
input
("請輸入要傳送的資訊:"
)# utf-8編碼
send_byte = send_str.encode(
"utf-8"
)# 傳送udp資訊
self.udp_socket.sendto(send_byte, self.destination_address)
defreceive_message
(self)
:"""接收訊息"""
# 接收udp資訊, 接收1024位元組
receive_data = self.udp_socket.recvfrom(
1024
)# 傳送方的ip位址
ip_address = receive_data[1]
[0]# 傳送方的埠
port = receive_data[1]
[1]# 資訊經過utf-8解碼
receive_str = receive_data[0]
.decode(
"utf-8"
)# 返回傳送方的位址資訊和接收到的資訊
return ip_address, port, receive_str
defrun(self)
:"""整體控制執行"""
# 當作為服務端執行時
if self.is_server:
("正在等待接收資料......"
)# 接收訊息
ip_address, port, receive_str = self.receive_message(
)# 列印傳送方的位址資訊和接收到的資訊
("接收到來自[{}:{}]傳送的資訊: 【{}】"
.format
(ip_address, port, receive_str)
)# 客戶端執行時
else
:# 傳送資訊
self.send_message(
)def
main()
:"""主函式"""
# 接收輸入, 並去除左右空格
is_server =
input
("是否作為服務端執行? [y/n]:"
).strip(
)while
true
:# 當輸入y時
if is_server.upper()==
"y":
# 作為服務端執行
udpchat(
).run(
)elif is_server.upper()==
"n":
# 作為客戶端執行
udpchat(is_server=
false
).run(
)else
("輸入資訊有誤"
) exit(
)if __name__ ==
'__main__'
: main(
)
UDP聊天器專案
由於udp通訊不是面向連線的,且雙方都可以利用套接字進行收發資訊 import socket def send msg udp socket dest ip input 請輸入你的ip dest port int input 請輸入你的埠 send data input 請輸入要傳送的資訊 將資訊傳...
應用 udp聊天器
網路通訊過程 網路通訊過程中,之所需要ip port等,就是為了能夠將乙個複雜的通訊過程進行任務劃分,從而保證資料準確無誤的傳遞 在乙個電腦中編寫1個程式,有2個功能 1.獲取鍵盤資料,並將其傳送給對方 2.接收資料並顯示 並且功能資料進行選擇以上的2個功能呼叫 要求實現上述程式 參考 import...
應用 udp聊天器
說明 在乙個電腦中編寫1個程式,有2個功能 1.獲取鍵盤資料,並將其傳送給對方 2.接收資料並顯示 並且功能資料進行選擇以上的2個功能呼叫 要求實現上述程式 參考 import socket def send msg udp socket 獲取鍵盤資料,並將其傳送給對方 1.從鍵盤輸入資料 msg ...