基于UDP的网络是无连接的,服务器和客户端不需要实现建立连接,发送数据时直接指定地址参数。通信双方地位平等,传输无法保证对方能够接收到数据报。
服务器端:
#ChatServerUDP.py
import socket
serversocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#创建UDP的socket
serversocket.bind(("127.0.0.1",8000)) #绑定到对应IP地址和端口
while 1:
data,address=serversocket.recvfrom(1024) #接受数据,返回数据和客户机地址
if not data:break; #接收收据为空时,终止循环
print("Received from client:",address,repr(data)) #将接收到的数据以字符串打印输出
print("Echo:",repr(data)) #输出发送到客户机数据信息
serversocket.sendto(data,address) #发送数据到客户机
serversocket.close() #关闭服务器socket
客户端:
#ChatClienUDP.py
import socket
clientsocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#创建UDP的socket
while 1:
data=raw_input(">") #用户输入数据
clientsocket.sendto(data.encode(),("127.0.0.1",8000)) #把数据以bytes对象发送到指定服务器
if not data:break #数据为空,终止循环
newdata=clientsocket.recvfrom(1024) #接收服务器的回送数据
print("Received from server:",repr(newdata))
clientsocket.close() #关闭客户机socket
运行结果:
服务器端:
客户机端:
CentOS下的运行结果:
服务器端:
客户机端: