编写UDP程序,实现在线时间服务器。客户端每秒向服务器发送请求b'ask for time'查询当前时间,服务器接收到程序请求之后反馈当前日期时间字符串。
时间: 2024-05-14 11:17:41 浏览: 29
以下是基于Python的UDP在线时间服务器代码:
**服务端代码:**
```python
import socket
import datetime
# 创建UDP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定服务器IP和端口号
server_address = ('localhost', 8888)
server_socket.bind(server_address)
while True:
# 接收客户端请求数据和客户端地址
data, client_address = server_socket.recvfrom(1024)
if data == b'ask for time':
# 获取当前时间
current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
# 将当前时间字符串转成字节流
time_bytes = bytes(current_time, encoding='utf-8')
# 发送当前时间字节流给客户端
server_socket.sendto(time_bytes, client_address)
```
**客户端代码:**
```python
import socket
import time
# 创建UDP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 服务器IP和端口号
server_address = ('localhost', 8888)
while True:
# 向服务器发送请求
client_socket.sendto(b'ask for time', server_address)
# 接收服务器返回的当前时间
time_bytes, server_address = client_socket.recvfrom(1024)
# 将时间字节流转成字符串并打印
print(str(time_bytes, encoding='utf-8'))
# 暂停1秒钟
time.sleep(1)
```
运行以上代码,客户端每秒向服务器发送请求,服务器接收到请求后反馈当前日期时间字符串,客户端收到并打印该字符串。
阅读全文