UDP网络程序
一.创建一个udp客户端程序
流程简单,具体步骤如下:
- 创建客户端套接字
- 发送/接收数据
- 关闭套接字
二.发送数据
from socket import * #1. 创建套接字 udpSocket = socket(AF_INET, SOCK_DGRAM) #2. 准备接收方的地址 sendAddr = ('192.168.1.103', 8080) #3. 从键盘获取数据 sendData = input("请输入要发送的数据:") #4. 发送数据到指定的电脑上 udpSocket.sendto(sendData, sendAddr) #5. 关闭套接字 udpSocket.close()
三.接收数据
#接收数据 from socket import * #1. 创建套接字 udpSocket = socket(AF_INET, SOCK_DGRAM) #2. 准备接收方的地址 sendAddr = ('169.254.134.201', 8080) #3. 从键盘获取数据 sendData = input("请输入要发送的数据:") #4. 发送数据到指定的电脑上 udpSocket.sendto(sendData, sendAddr) #5. 等待接收对方发送的数据 recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最大字节数 #6. 显示对方发送的数据 print(recvData) #7. 关闭套接字 udpSocket.close()
四.绑定信息
1).一般情况下,在一天电脑上运行的网络程序有很多,而各自用的端口号很多情况下不知道,为了不与其他的网络程序占用同一个端口号,往往在编程中,udp的端口号一般不绑定
但是如果需要做成一个服务器端的程序的话,是需要绑定的
2).示例
from socket import * #1. 创建套接字 udpSocket = socket(AF_INET, SOCK_DGRAM) #2. 绑定本地的相关信息,如果一个网络程序不绑定,则系统会随机分配 bindAddr = ('', 7788) # ip地址和端口号,ip一般不用写,表示本机的任何一个ip udpSocket.bind(bindAddr) #3. 等待接收对方发送的数据 recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最大字节数 #4. 显示接收到的数据 print(recvData) #5. 关闭套接字 udpSocket.close()
3).总结
- 一个udp网络程序,可以不绑定,此时操作系统会随机进行分配一个端口,如果重新运行次程序端口可能会发生变化
- 一个udp网络程序,也可以绑定信息(ip地址,端口号),如果绑定成功,那么操作系统用这个端口号来进行区别收到的网络数据是否是此进程的
五.总结
1.udp是TCP/IP协议族中的一种协议能够完成不同机器上的程序间的数据通信
2.udp服务器、客户端
- udp的服务器和客户端的区分:往往是通过
请求服务
和提供服务
来进行区分 - 请求服务的一方称为:客户端
- 提供服务的一方称为:服务器
3.udp绑定问题
- 一般情况下,服务器端,需要绑定端口,目的是为了让其他的客户端能够正确发送到此进程
- 客户端,一般不需要绑定,而是让操作系统随机分配,这样就不会因为需要绑定的端口被占用而导致程序无法运行的情况