Python基於socket程式設計(UDP版聊天)
阿新 • • 發佈:2018-12-16
説明:多臺電腦連同一網路可通訊。
有介面版待更;
目錄
一、UDP聊天(無介面)
1. 架構
2. 程式碼
UDP服務端程式碼:
import socket
# 建立套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 繫結固定埠
udp_socket.bind(('', 6665))
# 回射接收到的訊息
while True:
# 接收訊息
recv_data, remote_address = udp_socket.recvfrom(4096)
print("接收到了%s發來的訊息%s" % (str(remote_address), recv_data.decode()))
# 回射
udp_socket.sendto(recv_data, remote_address)
客戶端程式碼:
import socket
def send_message(udp_socket) :
# 輸入的內容
data = input("請輸入您要傳送的資訊內容:")
# ip
ip = input("請輸入對方的ip地址:")
# 埠
port = int(input("請輸入埠:"))
# 傳送資料
udp_socket.sendto(data.encode(), (ip, port))
def receive_message(udp_socket):
recv_data, romote_address = udp_socket.recvfrom(4096)
print("收到了來自%s的回信%s" % (str(romote_address), recv_data.decode()))
def main():
# 建立套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 繫結固定埠
udp_socket.bind(("", 6667))
while True:
# 輸入指示
command = input("請輸入您要執行的功能 1.傳送訊息 2.接收訊息 3.退出")
# 傳送資料
if command == '1':
send_message(udp_socket)
# 接收資料
elif command == '2':
receive_message(udp_socket)
# 退出
elif command == '3':
break
else:
print("輸入有誤,請重新輸入")
if __name__ == '__main__':
main()
3. 測試
執行伺服器端 等待
執行客戶端
輸入1 選擇傳送訊息
向本機發送了訊息
與同學連上同一個網路
互相傳送訊息