java - Android,setReuseAddress 不起作用

标签 java android sockets tcp

我看过关于这个问题的其他答案,但他们大多声明在绑定(bind)套接字之前调用 setReuseAddress (true)。但我正在这样做,但仍然不起作用,有人可以帮我解决这个问题吗?

SocketChannel tunnel = SocketChannel.open();

if (!protect(tunnel.socket())){
throw new IllegalStateException("Can not protect tunnel");}

Log.i("TAG", "test");
tunnel.socket().setReuseAddress(true);
tunnel.socket().bind(new InetSocketAddress(localAddress, localPort));
Log.i("TAG", "bind test");
tunnel.connect(new InetSocketAddress(destAddress, destPort));
tunnel.configureBlocking(false);

packet.position(0);
packet.limit(length);
Log.i("TAG", "schreibe: " + tunnel.write(packet));
packet.clear();

最佳答案

除非同一端口上的先前套接字绑定(bind)到除 0.0.0.0 之外的不同 IP 地址,否则它不适用于 TCP。 Windows 一如既往地异常(exception)。

关于java - Android,setReuseAddress 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18827676/

相关文章:

android-layout - Android 资源使用 XHDPI、HDPI

Android Management API 更改设备策略

python - recvfrom 返回的地址的第二部分是什么?

java - 当多个请求到来时保持 java 套接字处于 Activity 状态

Java FloatBuffer 大小错误 OpenGL

java - 简单的 JUnit 测试 assertTrue(true) 失败

Java 声音 |不支持的音频文件异常

android - PdfDocument.PageInfo.Builder(Rect, int) 构造函数抛出问题

java - 是什么触发 Socket 的 InputStream 关​​闭(或到达流的末尾)并简单地产生 null?

java - JPA:如何根据 ID 以外的字段值获取实体?