Wil*_*mKF 13 c++ sockets linux tcp ip-address
我在我的应用程序中出现了一个似乎不可重现的故障.我有一个TCP套接字连接失败,应用程序尝试重新连接它.在第二次调用connect()尝试重新连接时,我得到了errno == EADDRNOTAVAIL的错误结果,connect()的手册页表示:"指定的地址不能从本地计算机上获得."
看看对connect()的调用,第二个参数似乎是错误引用的地址,但据我所知,这个参数是远程主机的TCP套接字地址,所以我对这个人感到困惑页面引用本地计算机.是否我的本地计算机无法访问远程TCP套接字主机的此地址?如果是这样,为什么会这样呢?它必须在连接失败之前第一次成功调用connect()并尝试重新连接并获得此错误.connect()的参数两次都是相同的.
这个错误会不会是一个短暂的错误,如果我等了很长时间,如果我再次尝试调用connect可能已经消失了?如果没有,我应该如何从这次失败中恢复?
Dav*_*vid 19
检查此链接
http://www.toptip.ca/2010/02/linux-eaddrnotavail-address-not.html
编辑:是的我想增加更多,但由于紧急情况不得不削减它
在尝试重新连接之前,您是否关闭了套接字?关闭将告诉系统socketpair(ip/port)现在是免费的.
以下是其他项目:
链接与你的类似的错误(答案接近底部)
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4294599
看来您的套接字基本上停留在TCP内部状态之一,并且为重新连接添加延迟可能会解决您的问题,因为它们似乎已经在该错误报告中完成了.
| 归档时间: |
|
| 查看次数: |
27536 次 |
| 最近记录: |