基于udp的套接字编程

时间:2022-05-01 18:01:36

一,简单明了了解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"))

运行结果:

基于udp的套接字编程