首页 > 代码库 > python+soket实现UDP协议的客户/服务端中文聊天程序

python+soket实现UDP协议的客户/服务端中文聊天程序

 

没什么特别的东西,网上烂大街的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。  大侠救我!!!)

 

python+soket实现UDP协议的客户/服务端中文聊天程序