Каковы возможные причины, по которым я могу получить исключение SocketException "Socket closed", кроме того, что я вызываю close () для сокета?
Я использую ice4j в моей библиотеке, и один из коннекторов выдает SocketException: Socket closed
исключение при попытке чтения с него.Основным сокетом является DatagramSocket, который внутренне использует DualStackPlainDatagramSocketImpl.
Когда я использую отладчик для печати оператора каждый раз, когда создается сокет, исключение закрытого сокета выбрасывается (соединитель умер) или сокет закрывается (Регистрация вызова закрытия DatagramSocket и даже вызова закрытия DualStackPlainDatagramSocketImpl) Я вижу, как создается сокет, генерируется исключение и сокет закрывается только после этого.(Отладчик также показывает сокет как не закрытый в момент выдачи исключения.
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
...