编写一对linux网络服务器和客户端程序。服务器端口5566,开启服务器后等待客户端连接。客户端启动并连接服务器后自动发送一个“GET”命令请求服务器下发测试数据。
服务器程序在接收到客户端“GET”命令后向客户端下发包含两个随机整数的字符串(格式“M-N”,M<N且N<1亿,且M和N的数值差在9千万正负1%范围),并等待客户端应答计算结果。
客户端程序在接收到服务器下发字符串之后,提取出M和N,并计算M~N范围内的所有素数之和S,计算完结果后按照“M-N:S”格式上传回服务器。客服端收到服务器回送检查结果后自动结束。
服务器收到客户端收到客户端回送的“M-N:S”后,检查字符串中的M、N是否是向该客户端最后发出的数据,然后再对加和结果S进行检查。最后将检查结果(“M-N:S!OK”正确或“M-N:S!ERR”错误或”M-N:!TLL”超时)发回给客户端。服务器下发测试字符串后5秒内没有收到客户端应答即为超时。
服务器发送回检查结果后,按照“客户端IP地址,测试字符串,检查结果,耗用时间”的格式追加存储到res.txt文件。耗用时间为服务器接收到GET开始到服务器回送检查结果时的时间差,单位ms。
示例:
客户端发送: GET
服务器下发: 123-98765432
客户端回送: 123-98765432:123412341235417
服务器回送: 123-98765432:123412341235417!ERR
服务器记录: 192.168.1.23,123-98765432,!ERR,2453ms
备注,耗时超过5000ms没有成绩
|