python网络编程(三)
udp网络通信过程
udp应用:echo服务器
参考代码
#coding=utf-8 from socket import * #1. 创建套接字 udpSocket = socket(AF_INET, SOCK_DGRAM) #2. 绑定本地的相关信息 bindAddr = ('', 7788) # ip地址和端口号,ip一般不用写,表示本机的任何一个ip udpSocket.bind(bindAddr) num = 1 while True: #3. 等待接收对方发送的数据 recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最大字节数 #4. 将接收到的数据再发送给对方 udpSocket.sendto(recvData[0], recvData[1]) #5. 统计信息 print('已经将接收到的第%d个数据返回给对方,内容为:%s'%(num,recvData[0])) num+=1 #5. 关闭套接字 udpSocket.close()
udp应用:聊天室
#coding=utf-8 from socket import * from time import ctime #1. 创建套接字 udpSocket = socket(AF_INET, SOCK_DGRAM) #2. 绑定本地的相关信息 bindAddr = ('', 7788) # ip地址和端口号,ip一般不用写,表示本机的任何一个ip udpSocket.bind(bindAddr) while True: #3. 等待接收对方发送的数据 recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最大字节数 #4. 打印信息 print('【%s】%s:%s'%(ctime(),recvData[1][0],recvData[0])) #5. 关闭套接字 udpSocket.close()
udp总结
1. udp是TCP/IP协议族中的一种协议能够完成不同机器上的程序间的数据通信
2. udp服务器、客户端
- udp的服务器和客户端的区分:往往是通过
请求服务
和提供服务
来进行区分 - 请求服务的一方称为:客户端
- 提供服务的一方称为:服务器
3. udp绑定问题
- 一般情况下,服务器端,需要绑定端口,目的是为了让其他的客户端能够正确发送到此进程
- 客户端,一般不需要绑定,而是让操作系统随机分配,这样就不会因为需要绑定的端口被占用而导致程序无法运行的情况