java - 如何在 Java 代码中为数据报套接字设置重用地址选项?

标签 java android sockets exception

在我的应用程序中,将有一个线程始终在运行,并将发送或监听某个端口。

此应用程序在后台运行。有时在创建套接字时,我发现之前被同一个线程使用的端口没有在套接字的 close() 上释放。所以我试过这样

        dc = new DatagramSocket(inetAddr);
        dc.setReuseAddress(true);  

问题是,它也没有到达第二行。在第一行本身,我得到了 expcetion BindException: Address already in use

谁能帮我处理这种情况。

有什么办法可以释放端口吗?

感谢和问候,
S苏曼185

最佳答案

DatagramSocket(inetAddr) 绑定(bind)到端口。在绑定(bind)之前,您需要setReuseAddress(true)

要做到这一点...使用以下内容:

dc = new DatagramSocket(null);
dc.setReuseAddress(true);
dc.bind(inetAddr);

此构造函数使端口未绑定(bind)。

关于java - 如何在 Java 代码中为数据报套接字设置重用地址选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7832393/

相关文章:

java - 为什么这个 JSON 字符串无效? jQuery.parseJSON 函数抛出无效字符

java - 关闭套接字和 ObjectOutputStream 的正确方法?

python-2.7 - python中socket模块的 `listen(1)`方法中参数1是什么意思?

java.net.SocketException : socket failed: EPERM Operation not permitted although AndroidManifest have permits in it

sockets - 同时管理来自两个进程的串口

Java/C# 程序访问 Oracle 数据库,字符串中的字符错误

java - 如何为多个jar设置类路径在java命令提示符中使用

android - onBackPressed 将用户带回主 Activity

android - love2d编译器行为的差异

android - Uri.fromParts 让我在 Android 模拟器上得到 %2F