为什么我用非阻塞套接口对端口进行读取操作总是无法正常RECV到数据 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 非阻塞套接口对端口进行读取操作时,如果没有数据,RECV就立即返回错误。所以无法正常RECV到数据.你必须重载CSocket的OnRecieve(),在OnRecieve中RECV数据,这样就不会错了。 重载 CSocket::OnRecieve()在这里可以写如下的代码, pCMyClassObj->Receive(this); //this是这个socket对象.CMyClass::Receive(CMySock* pSock){pSock->Receive(Buf,....);}明白? 关键在于必须调用select()来判断异步的套接字是否可读,如果可读就调用recv()正常读取数据,否则当然就不读了。你的问题是没有使用select(),不论阻塞的还是异步的套接字读取数据都应该使用select()。 关于调用DLL的有些问题 WAV文件格式问题.RIFF 如何把一CString类型的数据,写入ACCESS的一日期型字段 怎样得到当前日期加上100天的日期?? 代理服务器问题! 有关CTypedPtrList问题 现有的画B样条曲线有那几种算法? MAKEINTRESOURCE()??? copyMemory和指针的操作不会大虾帮下我 请教一个DIB位图的问题,答者有分! 菜鸟请教(提问) 为什么Csocket close不了
在这里可以写如下的代码,
pCMyClassObj->Receive(this); //this是这个socket对象.CMyClass::Receive(CMySock* pSock)
{
pSock->Receive(Buf,....);
}
明白?
如果可读就调用recv()正常读取数据,否则当然就不读了。
你的问题是没有使用select(),不论阻塞的还是异步的
套接字读取数据都应该使用select()。