服务端程序,手动设置了丢包:
from socket import *
import random
serverport = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind(('', serverport))
while(True) :
rand = random.randint(0, 10)
message, address = serverSocket.recvfrom(2048)
modifiedMessage = message.upper()
if rand < 4: ;小于4的话故意丢包
continue
serverSocket.sendto(modifiedMessage, address)
客户端程序,发送十次ping,未丢包打印往返时间,丢包输出lost packaage:
from socket import *
import time
servername = '192.168.0.103'
serverport = 12000
#创建udp套接字
udpClientSocket = socket(AF_INET,SOCK_DGRAM)
sendmessage = "Ping"
udpClientSocket.settimeout(1)
for i in range(10):
sendtime = time.time()
try :
udpClientSocket.sendto(sendmessage.encode(),(servername,serverport))
serverMessage,serverAddress = udpClientSocket.recvfrom(2048)
RTT = time.time() - sendtime
print (RTT)
except :
print("lost package")
udpClientSocket.close()
实验结果,十次中丢包6次: