我在sdk下写一段代码,希望实现如果recv没有可接收的数据就返回,而不是
一直阻塞,双工可以解决这个问题吗?
能不能给点代码啊???
一直阻塞,双工可以解决这个问题吗?
能不能给点代码啊???
解决方案 »
- 除了使用AlphaBlend外,还有什么方法可以实现半透明效果的画图?
- 有人做过GHOST一样的软件吗?
- 请教各位setiosflag的用法,多谢!
- 求Com技術內幕這本書的隨書源碼.
- 除了WM_GETTXT外还有什么消息可以取得窗口的内容?
- 如何监视一个文件在关闭后是否有变化!!!!!!!!!
- 关于CCmdUI的问题(急)
- 菜鸟问题:CArray怎么使用?
- 关于MSDN的安装,怎样才能将VC的示例代码全部安装到硬盘上?
- 关于VC数据库的问题?
- 请教一个问题:关于用VB内部控件的下载。
- 高分,请救急。我想自己写WlxDisplayStatusMessage函数,让Winlogon进程调用,但不是掉用msgina.dll的WlxDisplayStatusMessage函数,是自
int recv_len=recv(skt,tmpbuf,sizeof(tmpbuf),MSG_PEEK);
int nStatus;
fd_set fdread;
FD_ZERO(&fdread);
FD_SET(m_hSocket, &fdread);
TIMEVAL tv = {5, 0};
nRet = select(0, &fdread, NULL, NULL, &tv);
if( 0 == nRet )
{
//超时处理
}
if( FD_ISSET(m_hSocket, &fdread) )
{
//从套接字中读取数据
}
{
if(Sock->IOCtl (FIONREAD,&datasize))
{
if(datasize!=0)
return true;
Sleep(100);
TimeOut+=100;
}
else
{
DWORD EE=GetLastError();
}
};
当不为0时就RECV它。否则跳过。 给分吧, 如果还有其他问题请问。
给分吧。
林的方法我想问问,Sock是个什么对象的指针?加油的方法我试了,但是还是阻塞住的,why
在Receive事件中置完成标记,这样阻塞对程序没有影响.
在另外的函数中完成取数.lngStartTime=GetTickCount();
lngPassTime=0;while(lngPassTime < 2000)
{
if (g_bCarInfoReady) // g_bCarInfoReady 表示状态标记
{
完成取数操作;
return 1;
}
Sleep(10);
lngPassTime = GetTickCount()-lngStartTime;
}return -3; // 3秒超时以上代码正在使用,经过实践检测,绝对是可用.如果有更好的方法,请指教.