客戶端需要同時建立到服務器的多個tcp連接。 我的服務器的代碼如下。Tcpclient多個客戶端連接到服務器
while (_running)
{
if (!_listener.Pending())
{
Thread.Sleep(100);
continue;
}
TcpClient client = _listener.AcceptTcpClient();
}
而我的客戶的代碼如下。
for (int i = 0; i < num; i++)
{
TcpClient tcp = new TcpClient();
tcp.Connect(_server);
}
第一個連接就是成功。但由於服務器沒有響應,第二個連接失敗(實際上服務器正在偵聽TCP連接)。
但是,如果我在每個tcp.Connect()之後添加Thread.Sleep(1500)
,則所有連接都會成功。但是這種情況只有在有一個客戶端和一個服務器時纔是正確的。如果客戶端很多,那麼我怎樣才能確保服務器可以接受的每個連接?另外爲什麼我添加Thread.Sleep可以使這種連接成功?
接受客戶端的延遲是由於代碼中的浪費,而不是API中的任何缺點。 – EJP