基于 java NIO 的 TFTP 客户端

TFTP client based on java NIO

我正在尝试使用 Java NIO 实现 TFTP 客户端。但它会导致错误:

network error: Address already in use: bind

此处共享代码段。

Selector selector = Selector.open();
DatagramChannel channel = DatagramChannel.open();
InetSocketAddress isa = new InetSocketAddress("10.86.4.250",69);
channel.socket().bind(isa);
channel.configureBlocking(false);

由于我是这个网络概念的新手,所以我无法理解原因。非常感谢解决此问题的任何帮助。

如果您正在开发客户端,您应该 .connect() 连接到套接字,而不是 bind()'ing(用于服务器),例如:

DatagramChannel channel = DatagramChannel.open();
channel.connect( new InetSocketAddress( "10.86.4.250" , 69 ) );
...

干杯,

看看 TFTPClient 客户端是如何实现的。
方法 initialiseSocketsendTftpPacket 更有趣。

基本上不需要绑定socket()。