2012-01-16 24 views
0

我有一個套接字服務器,它接受來自各種客戶端的多個連接。我使用連接的客戶端應用程序在本地主機上測試它 - 每隔10毫秒發送一次數據並關閉連接10次。有時,測試客戶端會產生一個錯誤:連接被遠程服務器或類似的東西拒絕。 這是服務器應用程序的正常行爲嗎?連接拒絕套接字。正常行爲?

+0

什麼操作系統?發佈一些代碼。 – selbie 2012-01-17 01:54:38

回答

2

每10毫秒10個連接每毫秒一個連接,這似乎是一個相當快的速度。這些連接嘗試是並行的嗎?如果是這樣,也許你正在填充服務器的listen()積壓隊列;在積壓隊列已滿的情況下嘗試連接的IIRC客戶端將獲得連接拒絕錯誤。

要測試該假設,請嘗試將更大或更小的數字作爲第二個參數傳遞給服務器上的listen(),然後查看是否會多次或多次發生拒絕連接的錯誤。

0

我和傑里米在一起。你沒有提到協議,但我認爲它是SOCK_STREAM。除了最本地的連接之外,任何事情都會花費超過10ms的時間進行tcp握手,最終會導致積壓(以及後續連接拒絕錯誤),無論您設置的監聽積壓程度有多高。

如果您可以保持連接處於打開狀態,並且在每個計算週期內不關閉連接,那麼您一定會領先。

相關問題