【问题标题】:java: bind exception address in use error when it isn't in use (as shown by netstat)java: bind exception address in use error when it is not in use(如netstat所示)
【发布时间】:2010-12-05 04:44:38
【问题描述】:

我的应用使用特定源端口与服务器建立出站连接(预计会出现防火墙问题 - 强化系统可能需要提前指定端口)。

我的问题是我的应用最初建立了连接。但是,如果连接中断,它会重试,但套接字会收到一个 BindException 说“正在使用的地址”。情况并非如此,如 netstat -pant 所示。它表明源端口/远程套接字对不存在(即,我什至没有在等待模式下看到它,连接只是不存在)。我将尝试永远连接,但没有任何成功。我认为如果之前的连接存在问题,它最终会超时,但事实并非如此。我永远得到绑定异常。

就我而言,我从 10.0.1.20:4002 连接到 10.0.1.229:4001。于是我用netstat查找源socket(10.0.1.20:4002)或者远程socket(10.0.1.229:4001),但是在初始连接断开后都没有找到,说明该地址不应该在使用中.

即使 netstat 没有报告,是否有什么东西会导致此连接仍然存在?

请注意,我使用的是 linux,而且我意识到使用随机源端口可以解决我的问题,但不能解决它。

请告诉我。

谢谢, jbu

【问题讨论】:

    标签: java exception sockets bind netstat


    【解决方案1】:

    当某些不好的事情发生时,close() 没有被调用——doh!

    【讨论】:

    • 感谢您发布这个问题。我有一个非常相似的问题,但是我用外部脚本很难杀死我的服务,所以我想不出在服务终止之前关闭连接的好方法。如果你能看一下这个问题,我会非常感激! stackoverflow.com/questions/15140588/…
    猜你喜欢
    • 2023-02-07
    • 2014-11-08
    • 2021-12-12
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 2022-12-28
    • 2022-12-02
    相关资源
    最近更新 更多