简单的NTP服务器就是我发询问,你回复时间,服务端与客户端代码如下:
1 from socket import * 2 import time 3 4 ip_duan = ('127.0.0.1', 8000) 5 buff = 1024 6 7 udp_server = socket(AF_INET, SOCK_DGRAM) # SOCK_STREAM是流式的套接字,sock_dgram是数据报式 8 udp_server.bind(ip_duan) 9 # 因为没有链接,所以没有listen,当然也就没有accept,直接进入通信循环 10 11 while True: 12 data, addr = udp_server.recvfrom(buff) #recv是tcp,recvfrom是udp 13 # 返回的是一个元组,第一个是数据内容,第二个是客户端的IP+端口 14 print(data.decode('utf-8')) 15 16 if not data: 17 fmt = '%Y-%m-%d %X' 18 else: 19 fmt = data.decode('utf') 20 21 back_time = time.strftime(fmt) 22 udp_server.sendto(back_time.encode('utf-8'),addr)
1 from socket import * 2 3 ip_duan = ('127.0.0.1', 8000) 4 buff = 1024 5 6 udp_client = socket(AF_INET, SOCK_DGRAM) # SOCK_STREAM是流式的套接字,sock_dgram是数据报式 7 # udp_client.bind(ip_duan) 8 # 因为没有链接,所以没有listen,当然也就没有accept,直接进入通信循环 9 10 while True: 11 msg = input('===>') 12 udp_client.sendto(msg.encode('utf-8'),ip_duan) # 没有链接,所以每次发的时候都要指定ip+duankou 13 14 data, addr = udp_client.recvfrom(buff) 15 print('时间服务器返回的时间',data.decode('utf-8'))