1.编程实现PING的服务器端和客户端,实现操作系统提供的ping命令的类似功能。
2.服务器端PingServer功能:
2.1 可以并发地为多个用户服务;
2.2 显示用户通过客户端发送来的消息内容(包含头部和payload);
2.3 能够模拟分组的丢失;能够模拟分组传输延迟;
2.4 将用户发送来的请求request在延迟一段随机选择的时间(小于1s)后返回给客户端,作为收到请求的响应reply;
2.5 通过如下命令行启动服务器:java PingServer port。
port为PingServer的工作端口号
3.客户端PingClient功能:
3.1启动后发送10个request。发送一个request后,最多等待1秒以便接收PingServer返回的reply消息。如果在该时间内没有收到服务器的reply,则认为该请求或对该请求的reply已经丢失;在收到reply后立即发送下一个request。
3.2请求消息的payload中至少包含关键字PingUDP、序号、时间戳等内容。如:PingUDP SequenceNumber TimeStamp CRLF
其中:CRLF表示回车换行符(0X0D0A);TimeStamp为发送该消息的机器时间。
3.3 为每个请求计算折返时间(RTT),统计10个请求的平均RTT、最大/小RTT。
3.4 通过如下命令行启动:java PingClient host port。
host为PingServer所在的主机地址;port为PingServer的工作端口号
|