C/C++教程

recv与recvfrom的区别及基于udp实现ntp服务

本文主要是介绍recv与recvfrom的区别及基于udp实现ntp服务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
'''recv与recvfrom的区别及基于udp实现ntp服务'''
from socket import *
'''服务端'''

ip_port = ('127.0.0.1', 8080)
buffer_size = 1024


udp_server = socket(AF_INET, SOCK_DGRAM)

udp_server.bind(ip_port)
#
# while True:
#  data, addr = udp_server.recvfrom(buffer_size) # 可以收到为空的消息
#  print(data)
#  # msg = input('请输入:')
#  udp_server.sendto(data.upper(), addr)
#
# udp_server.close()

# 因为udp没有建立链接这么一说,所以就这样也可以实现并发的效果,多个客户端链接并发送消息都可以处理,而tcp一次只能处理一个


'''ntp服务'''
import time
while True:
   data, addr = udp_server.recvfrom(buffer_size)
   if not data:
      fmt = '%Y-%m-%d %X'
   else:
      fmt = data.decode('utf-8')
   back_time = time.strftime(fmt) # 输入只要是符合%Y %m %d %X就都可以返回对应的时间及格式
   udp_server.sendto(back_time.encode('utf-8'), addr) # 如果数据类型为整型或浮点型,必须先转为字符串,然后再进行编码

udp_server.close()


from socket import *
'''客户端'''

ip_port = ('127.0.0.1', 8080)
buffer_size = 1024

udp_client = socket(AF_INET, SOCK_DGRAM)

# while True:
#  msg = input('请输入:').strip() # 输入为空时,服务端能收到一个为空的消息,服务端也发送给了一个为空转成大写(也是为空)的消息给客户端;而tcp会阻塞
#  udp_client.sendto(msg.encode('utf-8'), ip_port)
#  data, addr = udp_client.recvfrom(buffer_size)
#  print(data)
#
# udp_client.close()


'''ntp服务'''
while True:
   msg = input('请输入:').strip()
   udp_client.sendto(msg.encode('utf-8'), ip_port)
   data, addr = udp_client.recvfrom(buffer_size)
   print(data.decode('utf-8'))

udp_client.close()


from socket import *
'''客户端1'''

ip_port = ('127.0.0.1', 8080)
buffer_size = 1024

udp_client = socket(AF_INET, SOCK_DGRAM)

# while True:
#  msg = input('请输入:').strip() # 输入为空时,服务端能收到一个为空的消息,服务端也发送给了一个为空转成大写(也是为空)的消息给客户端;而tcp会阻塞
#  udp_client.sendto(msg.encode('utf-8'), ip_port)
#  data, addr = udp_client.recvfrom(buffer_size)
#  print(data)
#
# udp_client.close()


'''ntp服务'''
while True:
   msg = input('请输入:').strip()
   udp_client.sendto(msg.encode('utf-8'), ip_port)
   data, addr = udp_client.recvfrom(buffer_size)
   print(data.decode('utf-8'))

udp_client.close()
这篇关于recv与recvfrom的区别及基于udp实现ntp服务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!