2011-03-25 172 views
1

我剛開始學習TCP/IP。連接到同一臺服務器的多個tcpip客戶端?

我寫了一個簡單的TCP/IP服務器,它在端口3000上偵聽,並在接收到連接時產生一個線程。該新線程坐落並讀取數據。我的客戶端應用程序創建了100個連接到此服務器的連接,並且使用該連接池,每個連接都有機會向服務器發送唯一的消息。

服務器不響應該消息 - 它只將其打印到屏幕上。所以,我所看到的是服務器中的監聽線程有時會在同一次讀取中讀取來自多個不同客戶端的消息。

我的印象是,TCP會分隔每條消息,以允許服務器中的每個線程讀取發送給它的消息,而不是所有其他消息。我誤解了我的理解,還是我的代碼中還有其他內容?

+4

你怎麼知道它是從同一個閱讀中的多個客戶讀取的?你確定你不只是同時打印到屏幕上,並且踐踏你自己的輸出代碼嗎? – yan 2011-03-25 19:23:05

+0

我鎖定對System.Diagnostics.Debug.WriteLine的訪問,所以我只打印我正在閱讀的內容。 – Curtis 2011-03-25 19:37:58

回答

1

你的代碼中還有其他東西。 TCP或UDP都不會在同一次讀取中從多個客戶端收到。

我會看看我的緩衝區處理。請張貼一些關於讀取的服務器代碼。

0

謝謝。我想到了。我的客戶端線程比我在服務器上讀取的線程執行得要多得多。因此,每次讀取通常都包含來自多次寫入的數據。

相關問題