У меня есть следующее приложение, которое запускается, как показано ниже:
Runtime.getRuntime().exec("java -cp /var/dist/Test.jar System.V PDP-11");
Имеет от 10 до 20 секунд задачи и содержит TCP / UDP-сервер на порту 1965
. Как только эта задача будет выполнена, моя другая рука отправляет байт TCP для выключения системы. V
Runtime.getRuntime().exec("java -cp /var/dist/Test.jar System.V PDP-11/20");
В течение менее 1 секунды выполняется другое действие, как указано выше, но оно не выполняется, поскольку порт 1965
уже используется. Но он был убит с помощью System.exit(0)
Как мне решить это? Так что там не написано "уже используется порт"? Похоже, что для деинициализации портов TCP или UDP, которые прослушивались через Java, требуется много времени. (где порт nc -l убивается намного быстрее).
Продолжение:
Я попытался выполнить следующие действия, но все еще требуется слишком много времени, чтобы получить доступ к этому порту (ОС Linux).
байт [] buf = новый байт [50];
* * Sock.setSoTimeout тысячи двадцать-одина (100); * * тысяча двадцать-две