日期:2014-05-20  浏览次数:20956 次

mySocket.Receive(buffer)卡死
大家好,服务端C++,问题是客户端,我用的是.net的类库,我前几天才用.net的类库,遇到一点问题。
我在一个线程里面用
    mySocket.Receive(buffer);
结果调试程序,就在这地方卡住。
有没有什么注意的地方,大家提醒我一下。

以下代码是在一个线程里面
        try{
        if(0==mySocket.Receive(recvBuffer)) //但是整个程序在这地方卡住了
        {
            return;
        }
        if(mySocket.Available)
        {
                var str:String=Encoding.UTF8.GetString(recvBuffer);
        }
        }
        catch(err)
        {
            //do nothing
        }
------解决方案--------------------
.net客户端,c++服务端,这没问题

你可以改成异步的模式看看
------解决方案--------------------
mySocket.Receive以阻塞方式接收,在收到数据前卡死也算正常,但在独立的线程中使用没道理导致整个程序卡死,除非在接收阻塞时主线程或其它线程与该线程进行了通信