1

我正在使用System.Net.Sockets.TcpListener tcpl,System.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);
   }
}

我正在等待客户端,但这会给处理器带来过多的负载。是否有任何其他逻辑可以在不增加处理器负载的情况下执行此操作?

4

1 回答 1

2

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

while- 语句实际上是多余的,因为是AcceptTcpCLient()一种阻塞方法。如果您希望您的 UI 具有响应性,请为您创建一个线程TcpListener并在那里等待AcceptTcpClient()传入请求。

请参阅MSDN以获取更多参考。

于 2013-03-10T14:52:12.977 回答