2013-03-10 34 views
1

等待客戶我使用System.Net.Sockets.TcpListener tcplSystem.Net.Sockets.NetworkStream ns和服務器System.Net.Sockets.TcpClient echoserver;並使用此代碼,以保持應用程序響應使得客戶端服務器應用程序:中的TcpListener

while (!tcpl.Pending()) 
    Application.DoEvents(); 
echoserver = tcpl.AcceptTcpClient(); 
    ns = echoserver.GetStream(); 
using (MemoryStream ms = new MemoryStream()) 
{ 
    while ((i = ns.Read(recivedbytes, 0, recivedbytes.Length)) != 0) 
    { 
     ms.Write(recivedbytes, 0, i); 
    } 
} 

我在等待客戶,但是這使得處理器上的負載太多。有沒有其他邏輯可以在不增加處理器負擔的情況下做到這一點?

回答

2

while (!tcpl.Pending()) 
    Application.DoEvents(); 
echoserver = tcpl.AcceptTcpClient(); 

while語句來實際上是多餘的,因爲AcceptTcpCLient()是一個阻塞方法。如果您希望自己的用戶界面能夠響應,請爲您的TcpListener創建一個線程,並使用AcceptTcpClient()等待接收請求。

請參閱MSDN作進一步參考。