请教: read一个socket, read返回需要多长时间?

redex 2006-09-14 10:13:46
read一个socket, 假设read一直读不到数据的话, 它是否会一直
往那read, 是否会超时, 返回需要多长时间?
...全文
737 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pinelinda 2006-10-25
  • 打赏
  • 举报
回复
如果不设套接字的属性(读超时)的话,如果没有数据,则默认一直阻塞,
如果设置,则过超时时间后,就返回-1.

struct timeval recv_timeval;

s = socket(AF_INET, SOCK_STREAM, 0);

recv_timeval.tv_sec = 0;
recv_timeval.tv_usec = 500;

setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &recv_timeval, sizeof(recv_timeval));
bywind1980 2006-10-24
  • 打赏
  • 举报
回复
建议搂住读一下,rechard stevens的 unix网络编程 里面对这个问题有很详细的解释
happy_flying 2006-10-24
  • 打赏
  • 举报
回复
楼上所言极是。
redex 2006-10-24
  • 打赏
  • 举报
回复
据说在read过程中, 可能会被信号中断,
请问在什么情况下read会被什么信号中断呢?
johndiyang 2006-09-14
  • 打赏
  • 举报
回复
默认是等待有数据出现。
可以 通过select配置其反应。
fytzzh 2006-09-14
  • 打赏
  • 举报
回复
如果read没有数据可读,会一直阻塞下去,直到有数据可读,或者返回错误.
neophyte111 2006-09-14
  • 打赏
  • 举报
回复
如果有数据就应该小于1毫秒

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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