send和recv默认的超时时间是多长啊?还有,怎么判断使用recv接收数据时有没有全部接收完呢?
使用:
while(recv(....) > 0) {
....
}
总是会多接收一次,就会使程序阻塞好长一段时间,而用setsockopt设置接收的超时时间,又怕由于设置超时时间过短导致数据接收不到,有什么好的办法来解决这个问题吗?
解决就给分!不够再加!
使用:
while(recv(....) > 0) {
....
}
总是会多接收一次,就会使程序阻塞好长一段时间,而用setsockopt设置接收的超时时间,又怕由于设置超时时间过短导致数据接收不到,有什么好的办法来解决这个问题吗?
解决就给分!不够再加!
解决方案 »
- 如何批量打开一组网页
- 请教一个字符串放在代码区的问题
- 100分求,VC6环境下,Setting中各个选项的作用。
- CDatabase::ExecuteSQL为啥不出异常?
- 在MFC的mainframe的类中要用自己写的C函数的问题?
- 请问如何得知系统的分区数目和每个分区的盘符,能给个例子吗?
- 定义的Struct变量, 使用了new申请了内存, 用delete释放,老是有编译错误?
- 请问listctrl能owner-draw吗?如何实现?小弟重载DrawItem(LP..)似乎不管用。求助,急!
- 一个程序员从VB过度到VC困难么?他的C基础很一般……
- 如何调用SQL的函数,请大侠详细指出其函数的用法。-----不胜感激!!!!
- 多表操作的问题
- 请问单文档应用程序,自定义的类中如何获取视图类的指针?
getsockopt(...,SOL_SOCKET,SO_SNDTIMEO,...);//send超时时间timeval tm = { 0, 0 };
使用select( ..., &tm); 进行判断,select将马上返回,然后检查是否还有数据没有收到...
timeval tm = { 0, 0 };
使用select( ..., &tm); 进行判断,select将马上返回,然后检查是否还有数据没有收到...怎么检查是否还有数据啊,有没有代码参考啊?
ret=recv(m_Socket,rec_buf,LENECHODATA,0);
if(ret!=LENECHODATA){
// on windowx we use
int RetValue=0;
RetValue=WSAGetLastError();
TRACE("recv error:%d\n",RetValue);
if(RetValue==WSAEWOULDBLOCK){
continue;
}else{
this->CloseSocket();
return NULL;
}
}else{
break;
}
}
接收到就返回