2013-03-15 97 views
0

我在Linux平臺上使用阻止BOOST ASIO套接字。 在某些read()操作中,我看到500+ ms的巨大延遲。 (主要是等待時間是好的,但一個脫如此巨大的延遲是不能接受的)使用Boost :: Asio套接字看到500ms在讀

使用選項

_socket->set_option(tcp::no_delay(true)); 

我試圖在互聯網上搜索我已經禁用Nagle算法,它似乎還有其他的像Delayed Ack和PUSH標誌可以確保延遲消失。

我正在使用Linux,PUSH標誌設置可能在Linux中不可用。 不確定BOOST上的延遲確認設置。 (我應該使用從升壓插口提取的原生套接字描述符?)

關閉這個問題,延遲來自接收端。 在客戶端和服務器之間實現的底層協議是這樣的:接收者不會給發送者發送更多數據包的標誌。 TCP層面沒有任何內容。應用程序級別的實現不好。

+3

真正的問題是你用這個插座連接了什麼?掛斷是在連接的另一端,而不是你的。 – 2013-03-15 13:57:02

+2

你是如何測量這種延遲?它來自哪裏? – 2013-03-15 14:01:44

+1

您是否禁用了_sending_端的Nagle算法?它對接收方沒有影響。你確定發送方確實發送了數據嗎? – 2013-03-15 14:49:11

回答

0

延遲來自接收端。在客戶端和服務器之間實現的底層協議是這樣的:接收者不會給發送者發送更多分組的標誌。 TCP層面沒有任何內容。應用程序級別的實現不好。 關閉這個問題。

相關問題