基于udp的套接字编程
一,简单明了了解udp套接字编程
客户端:
1 #Author : Kelvin 2 #Date : 2019/1/30 11:07 3 from socket import * 4 ip_conf=("127.0.0.1",8888) 5 buffer_content=1024 6 udp_client=socket(AF_INET,SOCK_DGRAM) #数据报 7 while True: 8 udp_client.sendto(input("\033[1;32;0m回复:\033[0m").encode("utf8"),ip_conf) 9 data,addr=udp_client.recvfrom(buffer_content) 10 print("\033[1;36;0m服务器:\033[0m%s"%data.decode("utf8"))
服务器端:
1 #Author : Kelvin 2 #Date : 2019/1/30 11:07 3 from socket import * 4 ip_conf=("127.0.0.1",8888) 5 buffer_content=1024 6 udp_server=socket(AF_INET,SOCK_DGRAM) #数据报 7 udp_server.bind(ip_conf) 8 while True: 9 data,addr=udp_server.recvfrom(buffer_content) 10 print("\033[1;36;0m客户端:\033[0m%s"%data.decode("utf8")) 11 udp_server.sendto(input("\033[1;32;0m回复:\033[0m").encode("utf8"),addr)
udp套接字优点在于 可以同时接收多个客户端请求并通信,而tcp同一时间只能与一个客户端通信(纯净tcp),只有结束当前通信后才能与其他客户端通信。
二,udp示例(时间服务器)
服务器端:
1 #Author : Kelvin 2 #Date : 2019/1/30 11:07 3 from socket import * 4 import time 5 ip_conf=("127.0.0.1",8888) 6 buffer_content=1024 7 udp_server=socket(AF_INET,SOCK_DGRAM) #数据报 8 udp_server.bind(ip_conf) 9 while True: 10 data,addr=udp_server.recvfrom(buffer_content) 11 data=data.decode("utf8") 12 if not data: 13 form="%Y-%m-%d %X" 14 else: 15 form=data 16 now_time=time.strftime(form) 17 udp_server.sendto(now_time.encode("utf8"),addr)
客户端:
1 # Author : Kelvin 2 # Date : 2019/1/30 11:07 3 from socket import * 4 5 ip_conf = ("127.0.0.1", 8888) 6 buffer_content = 1024 7 udp_client = socket(AF_INET, SOCK_DGRAM) # 数据报 8 print(""" 9 1:直接回车获取默认时间格式 10 2:使用%Y %m %d %X 任意排序组合 11 3:使用%Y %m %d %X 其中的任意个 12 """) 13 while True: 14 udp_client.sendto(input("\033[1;32;0m获取时间命令:\033[0m").encode("utf8"), ip_conf) 15 data, addr = udp_client.recvfrom(buffer_content) 16 print("\033[1;36;0m服务器时间:\033[0m%s" % data.decode("utf8"))
运行结果: