2011-12-22 58 views
0

我有一個程序,用於測量學生執行任務所需的時間。 該程序連接到互聯網,最低時間的學生在網站上獲獎。遠程測量已用時間

鑑於PC可以不正確地測量時間(我見過它發生),或者學生可以預先加載共享庫來攔截OS調用並給出假時間,所以需要在服務器端執行時間。

目前我的邏輯是這樣的:

  1. 客戶端信號服務器開始。
  2. 服務器記錄時間並將ACK發送回客戶端。
  3. 客戶端收到ACK後啓動任務。
  4. 客戶端完成任務並向服務器發送通知。
  5. 服務器記錄時間並計算已用時間。

的問題是,這包括從時間服務器發送ACK到客戶端接收它+客戶端完成到服務器接收到該消息時的時間的時間的等待時間。如果等待時間爲400毫秒,任務時間爲6秒,則它佔總時間的相當大的百分比。

當學生或PC可能不值得信任時,有沒有更好的方法來衡量任務的時間?

回答

0

有些比賽要求學生或競爭對手將他的二進制程序(或mayb源代碼)上傳到您控制的服務器中。你可以做到這一點。特別是,如果是學生代碼,則可能需要上傳源代碼,並限制爲某些API,例如在chroot的環境中運行它。

+0

學生應該儘可能在最短的時間內回答10個quickfire數學問題 - 他們不會產生結果二進制或代碼,所以不幸的是,這是行不通的。 – 2011-12-22 16:50:31

+0

也許你可以在學生的瀏覽器中使用Javascript做事情? – 2011-12-22 17:27:26

+0

不幸的是,使用Javascript,用戶可以很容易地改變發生的事情,例如調用他們自己的方法,停止被調用的方法等。這不會使時序非常可靠。 – 2012-08-05 05:35:45