2013-04-16 62 views
1

我有兩個應用程序通過TCP套接字進行通信。第一個接收和第二個發送。TCP傳輸持續時間

First app: 
start=clock(); 
recv(); 
end=clock(); 

當我運行該應用程序,(端開始)是150-200毫秒(總是)

第二APP:

while (!stop) { 
    start=clock(); 
    prepare_message(); 
    send(); 
    end=clock(); 
} 

當運行應用程序時,(最終開始)是0.00毫秒。 (總是)

消息有效負載將近200-300字節,ping持續時間爲< 1ms。那麼,爲什麼接收者等待200毫秒,而發送者不等呢? 那麼我怎樣才能描述200msecs?

謝謝

回答

1

發送者發送消息時,它準備好了。接收方必須等待消息,這是額外時間可能來自的地方。如何確保在郵件發送後調用recv()?如果你不這樣做,那麼recv()很可能在等待輸入,而發送者尚未到達這部分代碼。

另一件事是,根據您使用的方法,發件人只會將郵件保存在緩衝區中,因爲TCP可能會等待更多數據將其組合到一個包中。您應該使用TCP_NODELAY選項來避免這種情況。

+0

謝謝,我會嘗試tcp_nodelay.i已編輯我的僞。它在'while'中循環,因此當接收者正在等待新消息時它正在發送或準備消息。 – xyzt