📅  最后修改于: 2023-12-03 15:26:04.124000             🧑  作者: Mango
这是一道考题,考查了应试者对计算机网络的理解和对网络协议的掌握,对应的知识点为 TCP 和 UDP 协议。
需要编写一个程序,使用 TCP 和 UDP 协议实现一个简单的客户端-服务器通信模型,具体要求如下:
要求程序代码片段需按 markdown 格式标明。
import socket
import time
# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置主机地址和端口号
host = socket.gethostname()
port = 9999
# 绑定端口号
server_socket.bind((host, port))
# 监听客户端连接
server_socket.listen(5)
while True:
# 接受客户端连接
client_socket, addr = server_socket.accept()
# 获取当前时间
current_time = time.ctime(time.time())
# 将当前时间发送给客户端
client_socket.send(current_time.encode('utf-8'))
# 关闭客户端连接
client_socket.close()
import socket
# 创建 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 设置主机地址和端口号
host = socket.gethostname()
port = 9999
# 连接服务器
client_socket.connect((host, port))
# 发送请求
client_socket.send('time'.encode('utf-8'))
# 接受响应
response = client_socket.recv(1024).decode('utf-8')
# 输出当前时间
print(f"Current time: {response}")
# 关闭客户端连接
client_socket.close()
import socket
# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 设置主机地址和端口号
host = socket.gethostname()
port = 9999
# 绑定端口号
server_socket.bind((host, port))
while True:
# 接受客户端消息
message, client_address = server_socket.recvfrom(1024)
# 将消息发送给客户端
server_socket.sendto(message, client_address)
import socket
# 创建 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 设置主机地址和端口号
host = socket.gethostname()
port = 9999
# 发送消息
client_socket.sendto('Hello, world!'.encode('utf-8'), (host, port))
# 接受响应
response, server_address = client_socket.recvfrom(1024)
# 输出响应
print(response.decode('utf-8'))
# 关闭客户端连接
client_socket.close()