Как подключиться к порту сразу, избегая socket_bind (): невозможно привязать адрес?

При запуске кода, который предполагается читать с порта TCP / IP, я часто получаю следующее сообщение (в зависимости от того, какой язык использовался):

socket_bind(): unable to bind address 

Я знаю, что это происходит, когда какой-то другой процесс прослушивает этот порт / привязан к этому порту (я не знаю точной фразы для описания), поэтому мой код не может прослушивать этот порт. Тем не менее, это мой код, который я просто остановил (CTRL-C), который блокирует этот порт! Кажется, что есть некоторый тайм-аут, и после ожидания некоторого времени (около 30 секунд) я могу запустить свой код, чтобы прослушивать этот конкретный порт без проблем.

Я бы хотел знать:

  • Почему порт все еще заблокирован, хотя я остановил код?
  • Как заставить систему выпустить этот порт, чтобы я мог перезапустить свой код и начать прослушивание этого порта?

One Solution collect form web for “Как подключиться к порту сразу, избегая socket_bind (): невозможно привязать адрес?”

Предполагая, что вы говорите на C / C ++, используйте setsockopt() и SO_REUSEADDR . Это позволяет повторно использовать до тех пор, пока нет активного процесса прослушивания этого порта.

Изменить: причина, по которой он все еще используется, заключается в том, что вы не закрыли сокет соответствующим образом. Вы Control-C убили его. Вы можете использовать netstat чтобы увидеть порты, которые открыты или еще не закрыты.

http://www.beej.us/guide/bgnet/output/html/multipage/setsockoptman.html

https://stackoverflow.com/questions/9207781/error-in-binding-port-address-already-in-use-tcp-socket-programming-in-unix

https://stackoverflow.com/questions/10071107/rebinding-a-port-to-datagram-socket-on-a-difftent-ip

  • Как MTR (работает по протоколу TCP) рассчитывает коэффициент потерь?
  • Linux «ip route» изменяет адрес источника TCP, но не UDP
  • Как мне зарезервировать порты для моего приложения?
  • Могу ли я запустить команду arbitary на удаленном сервере через tcpserver?
  • на каком уровне сетевого стека tcpdump получает информацию?
  • Как хранить данные на диске непосредственно в модуле ядра?
  • Не удается использовать telnet для частного IP-адреса или порта
  • socat duplicate stdin для каждого подключенного клиента
  • Заблокировать соединения tcp с помощью iptables
  • почему nmap показывает одни и те же порты иногда как фильтрованные, а иногда и закрытые?
  • Включен ли TCP PACING по умолчанию в linux?
  • Interesting Posts

    Если ^ a ^ b заменяет «a» один раз в последней команде, что я использую для замены всех вхождений «a»?

    извлечение в каталог, отличный от текущего каталога с помощью pax-архиватора

    Объединение двух сеансов экрана

    Оптимальный способ установки и чтения переменных

    Запретить изменение паролей

    Как связать команду оболочки с не-дочерним процессом, выходящим без состояния гонки?

    Пространство на жестком диске в одном месте, отображается меньше в папке «Компьютер»?

    Невозможно выполнить регистрацию открытого ключа SSH под зашифрованным домом

    Переменная не расширяется внутри другой переменной bash

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

    Поддерживает ли systemd перезапуск при отказе для демона forking?

    Вход не chdir () для исправления домашнего каталога (AD / realmd / sssd)

    ssh переходит к динамическому серверу через шлюз с ключом

    Значение префикса амперсанда в дереве устройств

    / usr / bin / статус выхода файла всегда 0

    Linux и Unix - лучшая ОС в мире.