为什么connect()给EADDRNOTAVAIL?

威廉·KF:

我的申请中出现了似乎无法再现的故障。我有一个TCP套接字连接失败,该应用程序尝试重新连接它。在第二次尝试重新连接的connect()调用中,我得到了errno == EADDRNOTAVAIL的错误结果,connect()的手册页说:“指定的地址在本地计算机上不可用。”

查看对connect()的调用,第二个参数似乎是错误所指向的地址,但是据我了解,该参数是远程主机的TCP套接字地址,因此我对该人感到困惑页面引用本地计算机。我的本地计算机上没有可用的远程TCP套接字主机地址吗?如果是这样,为什么会这样呢?它必须在连接失败之前第一次成功调用connect(),然后尝试重新连接并收到此错误。两次的connect()参数相同。

如果我等待了足够长的时间,如果我再次尝试调用connect,此错误是否会是暂时的错误?如果没有,我应该如何尝试从此故障中恢复?

大卫 :

检查此链接

http://www.toptip.ca/2010/02/linux-eaddrnotavail-address-not.html

编辑:是的,我原本打算添加更多内容,但由于紧急原因不得不将其削减

您是否在尝试重新连接之前关闭了插座?关闭将告诉系统套接字对(ip /端口)现在是空闲的。

这里还有一些其他项目:

  • 如果本地端口已连接到给定的远程IP和端口(即已经有相同的套接字对),则会收到此错误(请参见下面的错误链接)。
  • 绑定不是本地地址的套接字地址将产生此错误。如果计算机的IP地址是127.0.0.1和1.2.3.4,并且您尝试绑定到1.2.3.5,则将收到此错误。
  • EADDRNOTAVAIL:指定的地址在远程计算机上不可用,或者名称结构的地址字段全为零。

链接与您类似的错误(答案接近底部)

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4294599

看来您的套接字基本上卡在了TCP内部状态之一中,并且增加了重新连接的延迟可能会解决您的问题,因为它们似乎已在该错误报告中完成。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Kafka Connect Sftp源目录需要可写?

为什么要为redux connect创建新的Component类?

为什么UDPSocket.SendAsync()需要connect()方法才能工作?

与SAML相比,为什么OpenID Connect被认为对移动设备友好

为什么非阻塞套接字在 connect() 或 accept() 之前是可写的?

无效的connect()调用意外成功-为什么?

pyqtSlot装饰器为什么会导致“ TypeError:connect()失败”?

为什么死于connect_error()无法正常工作?

套接字:为什么accept()挂起,但connect()成功?

为什么Oracle伪列CONNECT_BY_ISLEAF似乎坏了?

为什么在WSASetSocketSecurity()之后我的套接字connect()失败?

为什么在 on_connect 之前调用 on_publish 回调?

为什么我的App Store Connect“应用预览”尺寸错误?

为什么我的ReactRedux.connect语句不起作用?

为什么我的on_connect()不打印消息?

16358 gen_tcp:connect调用后出现Erlang gen_server eaddrnotavail

为什么在配置Databricks Connect之后“ databricks-connect测试”不起作用?

为什么mysqli_connect不尊重MYSQLI_OPT_CONNECT_TIMEOUT?

为什么mysqli_connect不尊重MYSQLI_OPT_CONNECT_TIMEOUT?

为什么kafka connect内部主题connect-offsets有50个partition而connect-status有10个?

为什么Live Connect SignInButton失败并带有无效的redirect_uri?

为什么软件 VPN 不利用现有的 Direct Connect 连接?

为什么在代理 HTTP CONNECT 响应后没有来自 iphone 的响应

为什么express-session connect.sid值在客户端可见?

我不明白为什么带有'connect()'的组件在反应中处于有状态

为什么Google的OpenId Connect API不发回所有声明?

为什么实时重装不能与gulp-connect一起使用?

为什么我不能在我的 React Native 组件中使用 connect?

Gulp-Connect列出目录,而不显示index.html。为什么?