沒什么特別的東西,網上爛大街的C/S框架。(基於windows 7 + python 3.4)
為了實現中文聊天,我加入了一點修改:
msg.encode('utf-8') # msg 為輸入(且將要發送出)的信息 data.decode('utf-8') # data 為接收的信息
這樣做的原因是 sendto 函數只能發送ASCII字符,不支持發送中文(在 python3 中,中文默認是unicode編碼)。
所以,信息在送出之前要編碼,在接收到信息之后要解碼
完整的兩個文件如下:
#udp-server.py '''服務器''' from socket import * host = '' #服務器地址 port = 12345 #服務器端口 bufsiz = 2048 #緩存大小 adds = (host, port) #地址+端口 udpsersock = socket(AF_INET, SOCK_DGRAM) #創建UDP的套接字類型。 udpsersock.bind(adds) #綁定到地址和端口 while True: msg = input('服務器說:') #輸入數據 data, addc = udpsersock.recvfrom(bufsiz) udpsersock.sendto(msg.encode('utf-8'), addc) if not data: break print('客戶端回答:', data.decode('utf-8')) udpsersock.close()
#udp-client.py '''客戶端''' from socket import * host = 'localhost' #本地服務器地址 port = 12345 #客戶端端口(確保和服務器的端口一致 bufsiz = 2048 #緩存大小 addc = (host, port) #地址+端口 udpclisock = socket(AF_INET, SOCK_DGRAM) #創建UDP的套接字類型。 while True: msg = input('客戶端說:') #輸入數據 udpclisock.sendto(msg.encode('utf-8'), addc) data, adds = udpclisock.recvfrom(bufsiz) if not data: break print('服務器回答:', data.decode('utf-8')) udpclisock.close()
運行結果如圖:
(吐槽:python的input怎么按回車鍵沒用啊,只能Ctrl + D + Enter。 大俠救我!!!)