1

java.nio.channels.DatagramChannelを使用して基本的なUDPクライアントレシーバーを実行しようとしています。私は以下をまとめました:

DatagramChannel dc = DatagramChannel.open();
dc.setOption(StandardSocketOptions.SO_RCVBUF, Integer.MAX_VALUE);
dc.configureBlocking(true);
int listeningPort = 4445;
dc.connect(new InetSocketAddress(listeningPort));
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(2048);
dc.read(byteBuffer);

接続の呼び出しでバインド例外が発生します:

 Exception in thread "main" java.net.BindException: Cannot assign requested address: connect
    at sun.nio.ch.Net.connect0(Native Method)
    at sun.nio.ch.Net.connect(Unknown Source)
    at sun.nio.ch.DatagramChannelImpl.connect(Unknown Source)

運が悪かったのでポートを切り替えてみました...何か考えはありますか?

私はフォローしています: http ://tutorials.jenkov.com/java-nio/datagram-channel.html

私がする場合:

dc.socket().bind(new InetSocketAddress(listeningPort));

接続する代わりに、次のようになります。

Exception in thread "main" java.nio.channels.NotYetConnectedException
at sun.nio.ch.DatagramChannelImpl.read(Unknown Source)
4

1 に答える 1

4

私は以前に似たようなことをしたことがあります。それは私のコードの一部です:

    DatagramChannel datagramChannel = DatagramChannel.open();
    DatagramSocket datagramSocket = datagramChannel.socket();
    datagramSocket.setReuseAddress(true);
    datagramSocket.bind(new InetSocketAddress(HOST, PORT));
    datagramSocket.connect(address);
    datagramChannel.configureBlocking(false);

    datagramChannel.register(selector, SelectionKey.OP_READ);

HOST = "localhost"PORT = 19000

于 2013-02-26T02:42:45.320 に答える