我正在使用UDP Pinger Lab
这是说明中的完整问题:
目前,该程序计算每个数据包的往返时间并单独打印出来。修改此项以符合标准ping程序的工作方式。您需要在客户端的所有ping结束时报告最小,最大和平均RTT。另外,计算丢包率(百分比)。
在开始这部分工作之前,我必须创建一个客户端Python代码,该代码包含给我的服务器代码。
以下是给我的服务器代码:
import random
from socket import *
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', 12000))
while True:
rand = random.randint(0, 10)
message, address = serverSocket.recvfrom(1024)
message = message.upper()
if rand < 4:
continue
serverSocket.sendto(message, address)
这是我的客户端代码,它在命令提示符下工作:
import socket
import time
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_addr = ('localhost', 12000)
sock.settimeout(1)
try:
for i in range(1, 11):
start = time.time()
message = 'Ping #' + str(i) + " " + time.ctime(start)
try:
sent = sock.sendto(message.encode(), server_addr)
print("Sent " + message)
data, server = sock.recvfrom(1024)
print("Received " + data.decode())
end = time.time();
elapsed = end - start
print("RTT: " + str(elapsed) + " seconds\n")
except socket.timeout:
print("#" + str(i) + " Requested Timed Out\n")
finally:
print("closing socket")
sock.close()