日期:2014-05-19  浏览次数:20786 次

关于socket监听的问题
我的服务器端监听程序如下:
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);
    //这里是主要的处理过程,耗时一般较久
    ...
}
现在我发现这个监听程序只能同时处理一个请求,如果该请求正在处理,另外一个请求发过来时,这个服务器端并不会接收到,我应该怎么做呢?只有这么多分了,请大家不要嫌分少

------解决方案--------------------
用异步吧。BeginAccept,EndAccept
------解决方案--------------------
新建一个线程来接受Socket的信息。

接受方法不要跟监听放在同一线程里