BSD Socket中 recv接收不到数据,好像在一直等待

void*  Gameserver::listenSocketData(void* obj)
{
    char buffer;
    std::string contents;
    int ret = 0;
    // 先接受4字节,获取服务返回长度
    bool rs = true;
    int count=0;
    while(rs)
    {
        contents = "";
        send(m_socketHandle, "send from ios", 20, 0);
        CCLog("send:%d",count++);
        ret = recv(m_socketHandle,buffer,4,0);
        CCLog("what ret:%d",ret);
        // 服务器关闭
        if(ret == 0)
        {
            CCLog("Error: server close");
            rs = false;
        }
        if(ret == 4)
        {
            
            char buf;
            int start ;
            int end  ;
            while((ret = recv(m_socketHandle,buf,10,0))>0)
            {
                contents.append(buf,ret);
                    break;
            }
            CCLog("stard:%d,end:%d",start,end);
            CCLog("recv content:%s\n",contents.c_str());
            CCString* str = CCString::create(contents.substr(start,end-start));
            CCNotificationCenter::sharedNotificationCenter()->postNotification("receivedata", str);
        }else {
            CCLog("Error: recv data Error %d",ret);
        }
    }
    return NULL;
}



```


服务器端用的java,可以发送数据,接收不到。而且比较奇怪,只有我停止了iPhone模拟器,服务器端才打印出接收的信息,但用java测试,服务器收到发送的信息可以马上打印出来。用断点测试,到 ret = recv(m_socketHandle,buffer,4,0);就不再继续执行了,好像是一直等着接收数据似的。请高手指教是什么问题?