我的服务器端监听程序如下:
socket.Bind(localhost);
while (true)
{
  socket.Listen(0);
  Socket newSocket=socket.Accept();
  string rcvStr="";
  byte[] rcvBytes=new byte[1024];
  int iCount=newSocket.Receive(rcvBytes,rcvBytes.Length,0);
  rcvStr +=Encoding.ASCII.GetString(rcvBytes,0,iCount);
  //这里是主要的处理过程,耗时一般较久
  ...
}
现在我发现这个监听程序只能同时处理一个请求,如果该请求正在处理,另外一个请求发过来时,这个服务器端并不会接收到,我应该怎么做呢?只有这么多分了,请大家不要嫌分少

解决方案 »

  1.   

    产生一个进程,将newSocket交给进程处理,自己继续监听?
      

  2.   

    用异步吧。BeginAccept,EndAccept
      

  3.   

    新建一个线程来接受Socket的信息。接受方法不要跟监听放在同一线程里
      

  4.   

    socket.Listen(0);
    while (true)
    {
     
      Socket newSocket=socket.Accept();
      string rcvStr="";
      byte[] rcvBytes=new byte[1024];
      int iCount=newSocket.Receive(rcvBytes,rcvBytes.Length,0);
      rcvStr +=Encoding.ASCII.GetString(rcvBytes,0,iCount);
      //这里是主要的处理过程,耗时一般较久
      ...
    }
    这样写
      

  5.   

    在newSocket实例化之后,新建一个线程来处理这个请求.