2

この質問に関する他の回答を見てきましたが、ほとんどの場合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();
4

1 に答える 1

0

同じポートの前のソケットが 0.0.0.0 を除く別の IP アドレスにバインドされていない限り、TCP では機能しません。Windows はいつものように除外されます。

于 2013-09-16T12:15:55.787 に答える