C++使用非阻塞式socket与select模型实现connect连接超时的控制(附源码)

       有时我们可以调用套接字函数connect去连接远端IP设备的IP和端口,去检查远端IP设备是否在线,比如我们在系统中添加设备(包含IP和端口等信息)时,可以添加一个测试按钮,测试设备是否在线。使用默认的阻塞式的套接字去connect,如果设备不在线或者网络不通(也可能是添加的设备IP或端口有误),即设备一直连不上,connect则会一直在连接,会阻塞75秒超时后,connect函数会返回连接失败。这会导致软件直接堵塞在connect函数调用处,显然是不能容忍的,也是不合理的。针对这种场景,我们可以使用非阻塞式套接字加select函数判断,很好的实现短时间的超时控制,从而快速地判断出设备是否在线,而不会产生长时间的堵塞。

1、查看相关函数说明,搞清楚非阻塞式套接字、connect函数和select函数结合起来去实现超时控制的方法

       对于tcp套接字,我们需要调用套接字函数connect去建立TCP连接。我们先来看看微软MSDN上对套接字接口connect的描述:

int WSAAPI connect(
  [in] SOCKET         s,
  [in] const sockaddr *name,
  [in] int            namelen
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dvlinker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值