关于fread超时问题

zxhong 2007-01-10 08:02:49
有一开源代码,建立socket后,用fdopen打开sockid,返回FILE指针

以后对该socket的操作都是以流文件方式如:fread,fwrite等

我的问题是如何对fread操作进行超时处理?select,setsockopt似乎都不行

...全文
573 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhousqy 2007-01-11
  • 打赏
  • 举报
回复
select怎麽不行了?

int WaitResponse(int sock_fd, int timeout)
{
fd_set rfds;
struct timeval tv;
int ret = FALSE;
int selectRet = -1;

memset(&tv, 0, sizeof(struct timeval));

FD_ZERO(&rfds);
FD_SET(sock_fd, &rfds);
tv.tv_sec = timeout;
tv.tv_usec = 0;
selectRet = select(sock_fd + 1, &rfds, NULL, NULL, &tv);
if(selectRet == -1){
ret = FALSE;
}
else if(selectRet > 0 && FD_ISSET(sock_fd, &rfds)){
ret = TRUE;
}
else{
ret = FALSE;
}
return ret;
}
jixingzhong 2007-01-10
  • 打赏
  • 举报
回复
如何设置连接超时:
http://blog.bcchinese.net/v45072501/archive/2006/06/05/73642.aspx
jixingzhong 2007-01-10
  • 打赏
  • 举报
回复
int TimeOut=6000; //设置发送超时6秒
if(::setsockopt(cClient,SOL_SOCKET,SO_SNDTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
......
zxhong 2007-01-10
  • 打赏
  • 举报
回复
connect成功后

setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &seltime, sizeof(seltime));
zxhong 2007-01-10
  • 打赏
  • 举报
回复
setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &seltime, sizeof(seltime));
Arthur_ 2007-01-10
  • 打赏
  • 举报
回复
select,setsockopt似乎都不行??
你是怎么处理的

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧