1.编程实现 PING 的服务器端和客户端,实现操作系统提供的 ping 命令的类
时间: 2024-02-05 21:14:10 浏览: 65
服务器端实现:
```python
import socket
# 创建一个UDP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定IP地址和端口号
server_socket.bind(('127.0.0.1', 9999))
print('Ping服务器启动,等待客户端连接...')
while True:
# 接收来自客户端的数据
data, client_address = server_socket.recvfrom(1024)
# 打印收到的ping请求信息
print(f'Received ping request from {client_address[0]}:{client_address[1]}')
# 将收到的数据返回给客户端
server_socket.sendto(data, client_address)
```
客户端实现:
```python
import socket
import time
# 创建一个UDP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 设置超时时间
client_socket.settimeout(1)
# 定义发送ping请求的次数
num_pings = 10
# 定义ping请求的数据
data = 'Ping'.encode()
for i in range(num_pings):
# 记录当前时间
start_time = time.time()
try:
# 发送ping请求
client_socket.sendto(data, ('127.0.0.1', 9999))
# 接收ping服务器返回的数据
data, server_address = client_socket.recvfrom(1024)
# 计算ping请求的延迟时间
delay = (time.time() - start_time) * 1000
# 打印ping请求结果
print(f'Ping reply from {server_address[0]}: bytes=32 time={delay:.2f}ms')
except socket.timeout:
# 打印超时信息
print('Request timed out')
# 关闭socket连接
client_socket.close()
```
如果你想要在 Windows 系统下运行上述代码,需要使用管理员权限打开命令提示符或 PowerShell,并将 `server_socket.bind(('127.0.0.1', 9999))` 中的 IP 地址改为你的本地 IP 地址。
阅读全文