在TcpListener中等待客户端

时间:2013-03-10 14:43:20

标签: c# client-server

我正在使用服务器中的System.Net.Sockets.TcpListener tcplSystem.Net.Sockets.NetworkStream nsSystem.Net.Sockets.TcpClient echoserver;制作客户端服务器应用程序,并使用此代码来保持应用程序响应:

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);
   }
}

我正在等待客户端,但这会对处理器造成太大负担。在不增加处理器负载的情况下,还有其他逻辑吗?

1 个答案:

答案 0 :(得分:2)

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

while - 语句实际上是多余的,因为AcceptTcpCLient()是一种阻塞方法。如果您希望自己的用户界面具有响应能力,请为TcpListener创建一个主题,然后使用AcceptTcpClient()等待传入请求。

有关详细信息,请参阅MSDN