1
我使用DatagramChannel在Java中编写了一个多线程UDP代理。Java:复位时网络丢失连接
,直到出现以下异常它工作正常:
java.net.SocketException: Network dropped connection on reset: no further information
at sun.nio.ch.DatagramChannelImpl.receive0(Native Method)
at sun.nio.ch.DatagramChannelImpl.receiveIntoNativeBuffer(Unknown Source)
at sun.nio.ch.DatagramChannelImpl.receive(Unknown Source)
at sun.nio.ch.DatagramChannelImpl.receive(Unknown Source)
at com.fabio.rotumaster.proxy.ProxyMain.handlePacket(ProxyMain.java:189)
at com.fabio.rotumaster.proxy.ProxyMain.run(ProxyMain.java:169)
at java.lang.Thread.run(Unknown Source)
在ProxyMain.java上线189只有接收方法被称为:
SocketAddress sender = this.clientChannel.receive(buffer);
从时间随机出现的错误时间。有时只有一次,有时连续5次。
有没有人有想法?
是否有一些超时踢? – Fildor
clientChannel是主要通道,当发生异常时,有10个其他客户端连接发送〜50包/秒。这不可能是DatagramChannel的超时 – modsfabio
刚刚发现,DatagramChannel不支持读取超时,所以这不可能是原因。 – Fildor