linux下C/C++程序中网络状态检测问题

时间:2021-12-27 05:21:15
正在做多线程的图片下载,因为公司的网络有时会有掉线现象,所以想加一个网络状态检测的单独线程,如果发现网络不通就让其他下载线程暂停知道网络恢复畅通。有个方法与一个远端服务器建立Socket连接,但觉得这种方法不够优雅,希望哪位高手能提供一个更好的办法。(注意是linux环境,千万别提windows的API)

10 个解决方案

#1


怎么没人回答啊,这个问题应该很多人遇到的啊

#2


晕,没人回答 那你解决了吗?这个问题,我现在也遇到这个问题?希望有人可以给解答下,十分感谢
~~~

#3


如果每次下载一张图片的话  你只需要判断图片是否完整即可  不完整就重下~   你没说说你具体环境啊

#4


用nslookup去检测

#5


用ping去检测

#6


网络不通时下载线程自然就失败了,还需要单独一个线程来检测网络吗?

#7


就用Ping去检测。

#8


可以把这个逻辑放到你的下载线程里, 做自管理。
另外ping和TCP连接间没有必然联系,完全是两种协议。只不过通常碰到ping不通的情况都是网络断了,TCP自然也连不上去。

#9


开个单独SOCKET很好,你可以直接连接百度服务器地址呗!!!connect不痛就代表有问题!

#10


可以增加一个心跳机制线程检测网络。

下载线程:
     记住图片下载了多少,网络不通,则暂停下载;
     网络通时,重新连接服务器,继续下载图片剩余部分。

心跳线程:发心跳包,检测网络。

#1


怎么没人回答啊,这个问题应该很多人遇到的啊

#2


晕,没人回答 那你解决了吗?这个问题,我现在也遇到这个问题?希望有人可以给解答下,十分感谢
~~~

#3


如果每次下载一张图片的话  你只需要判断图片是否完整即可  不完整就重下~   你没说说你具体环境啊

#4


用nslookup去检测

#5


用ping去检测

#6


网络不通时下载线程自然就失败了,还需要单独一个线程来检测网络吗?

#7


就用Ping去检测。

#8


可以把这个逻辑放到你的下载线程里, 做自管理。
另外ping和TCP连接间没有必然联系,完全是两种协议。只不过通常碰到ping不通的情况都是网络断了,TCP自然也连不上去。

#9


开个单独SOCKET很好,你可以直接连接百度服务器地址呗!!!connect不痛就代表有问题!

#10


可以增加一个心跳机制线程检测网络。

下载线程:
     记住图片下载了多少,网络不通,则暂停下载;
     网络通时,重新连接服务器,继续下载图片剩余部分。

心跳线程:发心跳包,检测网络。