Проблема
В настольном сетевом приложении при отправке данных в DatagramSocket иногда возникает исключение:
java.net.SocketException: No buffer space available (maximum connections reached?): Datagram send failed
После того, как это исключительное гнездо полностью не используется: оно неничего не получаю и send () висит бесконечно.Тест воспроизведения является тривиальным приложением (create socket, bind, while (true) send ();)
Я могу повторить это поведение в 100% случаев только в Windows, когда моя машина переходит в спящий режим, а затемвернитесь в середину «интенсивного потока данных».
Вопросы: :
- нормально ли это поведение для сокетов bsd - выйти из строя послеошибка?или это что-то вроде ошибки WSA?
- есть ли какой-либо способ "переустановить" неисправный сокет в рабочее состояние или открытие сокета является единственным решением?
- можно ли отличить такие условия отрегулярные ошибки ввода / вывода (т.е. исправимые) после перехвата исключения?
- Существуют ли общие рекомендации / рекомендации относительно того, когда я буду вновь открывать сокеты в приложении (я имею в виду: изменен сетевой адрес, режим сна / пробуждения ПК идругие события)
Спасибо!:)