用Python实现一个简易的ping程序,客户端发送一个简易的ping报文,接收到该信息的服务器返回对应的pong报文,然后客户端计算RTT。由于UDP不是可靠协议,需要为该程序设置超时机制,超时1秒后将假设报文没有收到,并打印出超时提示。
服务器实现如下:
import socket
import errno
import os
HOST, PORT = "", 8888
def serve_forever():
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
print "Serving on port %s ..." % PORT
while True:
request, addr = listen_socket.recvfrom(2048)
response = "Wrong CMD"
if request == "Ping": #保证是Ping指令,否则返回Wrong CMD
response = "Pong"
listen_socket.sendto(res