在我的应用程序中,将有一个线程始终在运行,并将发送或侦听某个端口。
此应用程序在后台运行。有时在创建套接字时,我发现之前由同一个线程使用的端口没有在套接字的close()上释放。所以我试过这个
dc = new DatagramSocket(inetAddr);
dc.setReuseAddress(true);
问题是,它还没有到达第二行。在第一行本身我得到了exp BindException: Address already in use
。
任何人都可以帮我解决这个问题。
有没有办法释放这个端口?
谢谢&问候,
SSuman185
答案 0 :(得分:12)
DatagramSocket(inetAddr)
绑定到端口。在绑定之前需要setReuseAddress(true)
。
要执行此操作...请使用以下内容:
dc = new DatagramSocket(null);
dc.setReuseAddress(true);
dc.bind(inetAddr);
此构造函数使端口保持未绑定状态。
答案 1 :(得分:6)
使用MulticastSocket
。构造它没有参数。这隐式调用setReuseAddress(true)。然后调用bind()。
目前你调用setReuseAddress()的时间太晚,无法做任何好事。
答案 2 :(得分:1)
这就是我的工作方式:
0