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);就不再继续执行了,好像是一直等着接收数据似的。请高手指教是什么问题?