Network programming 远程测量运行时间
我有一个程序,测量学生完成任务所需的时间。 该项目连接到互联网,时间最短的学生可以在网站上获得奖励 考虑到PC可能会错误地测量时间(我见过这种情况发生),或者学生可能会预加载共享库以拦截操作系统调用并给出虚假时间,因此需要在服务器端执行计时 目前我的逻辑是这样的:Network programming 远程测量运行时间,network-programming,timing,Network Programming,Timing,我有一个程序,测量学生完成任务所需的时间。 该项目连接到互联网,时间最短的学生可以在网站上获得奖励 考虑到PC可能会错误地测量时间(我见过这种情况发生),或者学生可能会预加载共享库以拦截操作系统调用并给出虚假时间,因此需要在服务器端执行计时 目前我的逻辑是这样的: 客户端向服务器发出启动信号 服务器记录时间并将ACK发送回客户端 客户端在收到ACK后启动任务 客户端完成任务并向服务器发送通知 服务器记录时间并计算经过的时间 问题是,这包括从服务器发送ACK到客户端接收ACK的延迟+客户端完成到服
当学生或电脑可能不可信时,有没有更好的方法来测量任务的时间?有些比赛要求学生或竞争对手将其二进制程序(或源代码)上传到您的服务器,您可以控制服务器。你可以这么做。特别是,如果是学生代码,您可能需要上传源代码,并限制为某些API,例如,在
chroot
-ed环境中运行它。学生应该在尽可能短的时间内回答10道quickfire数学题-它们不会生成结果二进制或无法工作的代码。也许你可以在学生的浏览器中使用Javascript进行操作?不幸的是,使用Javascript,用户可以非常轻松地更改所发生的事情,例如调用自己的方法、停止调用方法等。这不会使计时非常可靠。