Apache Mina UDP客户端:java.net.PortUnreachableException
似乎没有关于Apache Mina UDP客户端:java.net.PortUnreachableException,java,sockets,udp,apache-mina,Java,Sockets,Udp,Apache Mina,似乎没有关于java.net.PortUnreachableException的文档 我制作了一个简单的ApacheMinaUDP服务器并运行了它。然后,我使用telnet 127.0.0.1 3450检查它是否正在侦听,并且连接没有被拒绝,因此服务器肯定可以工作 客户端由以下文件组成 这是下面的主要类别: public static void main(String[] args) { System.out.println("started"); NioDatagramConn
java.net.PortUnreachableException
的文档
我制作了一个简单的ApacheMinaUDP服务器并运行了它。然后,我使用telnet 127.0.0.1 3450检查它是否正在侦听,并且连接没有被拒绝,因此服务器肯定可以工作
客户端由以下文件组成
这是下面的主要类别:
public static void main(String[] args) {
System.out.println("started");
NioDatagramConnector connector = new NioDatagramConnector();
connector.setHandler(new PacketHandler());
ConnectFuture cf = connector.connect(new InetSocketAddress("127.0.0.1", 3450));
}
这是PacketHandler类的一部分:
@Override
public void sessionOpened(IoSession s) {
System.out.println("opened " + s.getId() + " " + s.getLocalAddress().toString() + " " + s.getRemoteAddress().toString());
byte[] data = new byte[]{(byte) 0x01};
System.out.println("Sending " + data.length);
IoBuffer buffer = IoBuffer.allocate(data.length);
buffer.put(data);
buffer.flip();
s.write(buffer);
}
当客户端运行时,我得到以下错误:
started
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
created 1
opened 1 /127.0.0.1:56777 /127.0.0.1:3450
Sending 1
java.net.PortUnreachableException
at sun.nio.ch.DatagramDispatcher.read0(Native Method)
at sun.nio.ch.DatagramDispatcher.read(DatagramDispatcher.java:43)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
at sun.nio.ch.IOUtil.read(IOUtil.java:197)
at sun.nio.ch.DatagramChannelImpl.read(DatagramChannelImpl.java:560)
at org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:311)
at org.apache.mina.transport.socket.nio.NioProcessor.read(NioProcessor.java:45)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:702)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657)
at org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:67)
at org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1121)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
closed 1
服务器还记录连接,当客户端运行时,不会记录任何连接。但是,当从我的终端运行
telnet 127.0.0.1 3450
时,会在服务器日志中记录连接。显然,客户端实际上没有连接。Telnet无法连接到UDP。因此,您正在使用Telnet测试TCP服务器,但没有任何结果
检查代码,您可以将其粘贴到此处 Telnet不能证明UDP端口的任何特性。它测试TCP端口。您连接的端口上没有打开UDP套接字。@Michaël当然有,回答正确。