2012-04-19 79 views
0

我試圖返回時間(秒,毫秒,微秒)從服務器的回覆需要的記錄時間,我的客戶端發送一個小的數據包到服務器,服務器將回復到客戶端。現在,我要的是插入在從客戶端發送到服務器的數據包的時間戳的方式與服務器追加自己的時間戳,以泰德包,並將其返回給客戶端。當客戶端收到該數據包時,它會查找兩次之間的差異,並將該差異作爲往返時間+服務器處理時間返回。TCP時間戳,到回答

我的問題是,我知道有一個與TCP套接字時間戳的選擇,但也有在網絡上沒有例子了吧。如果任何人都可以引導我這將是偉大正確的方向。

感謝 操作系統:Ubuntu的11.10 語言:C 插座:BSD

回答

0

如果你感興趣的業績衡量,你可能會更好安裝Wireshark http://www.wireshark.org/並查看數據包日誌。這會給你準確的時間,而不會改變你測量的代碼或堆棧。

0

根據如何在內心深處,你想要去的兔子洞......

如果要專門使用TCP數據包(如您的代碼中)最直接的方法是從客戶端發送一個數據包到服務器的有效負載僅由當前時間戳組成。當服務器接收到數據包時,將服務器的時間戳附加到有效負載並將其返回給客戶端。

確保兩個客戶端/服務器的timesynced爲好。

1

是客戶端單線程?如果是這樣,並且如果您只是測量往返+處理時間所花費的時間,那麼您只需測量客戶端發送數據包並接收相應響應的時間即可。 所以剛以毫秒爲單位的客戶端執行發送前,然後得到的時間以毫秒爲單位的客戶端收到響應後。這兩個差異是往返時間+處理時間。當然,這隻有在客戶端是單線程的時候才起作用(即,它發送並立即調用recv並等待來自服務器的響應)