日期:2014-05-16  浏览次数:20727 次

有没有什么方法使gethostbyname和connect这些行为能够超时结束?
也就是说写一个函数如connect_with_timeout (..., float timout)使其连接服务器能够有超时功能。
有没有什么方法来实现这样的功能?


------解决方案--------------------
起个定时器,如果规定时间没完成就退出connect并返回
------解决方案--------------------
不好意思,还是有疑问,程序走到
if ((i=connect(fd, (struct sockaddr*)&addr, sizeof(addr))) == 0) 
这一行,fd出错连不上了怎么办?前边并没有超时控制啊?


----------------------------------------------

这种方式采取的就是把fd设置成非阻塞方式,connect只是发出连接指令,并不等待对方回应就退出.
超时控制由下边的select来控制,连接成功失败是由getsockopt来判断的