Я пишу сетевое приложение, и я столкнулся с небольшой неприятностью. Я должен ждать промежуток между тестами, потому что моя серверная программа, даже после закрытия, все еще имеет порт, который я использую для нее. Кроме того, это делает отладку очень сложной, поскольку я не могу сказать, что вызывает какую-либо проблему, с которой я сталкиваюсь.

Для целей тестирования есть ли способ освободить порты TCP и UDP?

1 ответ1

1

В вашей программе на Python вам нужно вызвать функции shutdown и close для сокета, чтобы ОС знала, что ваша программа больше не использует его, и она освободит сокет, если после вызова этих функций ничто не использует его. Если вам не удастся вызвать эти функции при выходе из вашей программы, вам придется ждать в ОС, чтобы очистить устаревшие выделенные сокеты. Даже если вы принудительно уничтожите приложение, так как ОС по-прежнему не может точно определить, что оно не используется. Таким образом, когда программа умирает и не закрывает сокет должным образом, ОС будет держать ее выделенной в течение некоторого времени, пока не проверит, действительно ли она используется, а если нет, то освобождает его для использования другими программами.

Вот ссылка, которая объяснит функции выключения и закрытия для сокетов в python. ТАК Ответ

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .