1. 程式人生 > >Python基於socket程式設計(UDP版聊天)

Python基於socket程式設計(UDP版聊天)

説明:多臺電腦連同一網路可通訊。
有介面版待更;

目錄

一、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 選擇傳送訊息
在這裡插入圖片描述
向本機發送了訊息
在這裡插入圖片描述
與同學連上同一個網路
互相傳送訊息
在這裡插入圖片描述

二、UDP聊天(可視介面)