除了在套接字上调用close()之外,我还能获得“套接字关闭” SocketException的可能原因是什么?
我在库中使用ice4j,并且其中一个连接器在尝试从中读取时抛出SocketException: Socket closed
异常。底层套接字是一个DatagramSocket,它在内部使用DualStackPlainDatagramSocketImpl。
每次创建套接字获取时,我都使用调试器打印一条语句时,抛出套接字关闭异常(连接器死亡)或套接字关闭(记录DatagramSocket close调用甚至DualStackPlainDatagramSocketImpl close调用),我看到套接字正在创建后,将引发异常,然后仅关闭套接字。 (调试器还会在抛出异常时将套接字显示为未关闭。
New ice udp socket: null 27816247
New ice udp socket: /192.168.178.20 4527382
New ice udp socket: /192.168.178.20 20777338
...
Connector died 20777338 //Socket closed exception got thrown
Close udp socket /192.168.178.20 20777338 //Connector caused another close call to handle the exception
Close udp socket /192.168.178.20 20777338
...