| Предыдущий | Следующий |
| EMSGSIZE | ENOSR |
EADDRINUSE
Что означает EADDRINUSE в Linux
EADDRINUSE: Адрес уже используется. Сначала определите, какой процесс или предыдущий socket state уже удерживает локальную комбинацию адреса и порта; это отличается от недоступности самого адреса.
В Linux связывайте errno с конкретным системным socket-вызовом и network namespace; одинаковое число без имени вызова и endpoint context недостаточно для диагностики. Полезные технические маркеры из контекста этой ошибки: EADDRINUSE, bind(), SO_REUSEADDR, TCP, IPv4, IPv6, POSIX. Записывайте их фактические значения или режимы, а не только символическое имя errno.
Диагностика
- Проверьте маршрут и интерфейс отдельно от состояния удалённого сервиса: эти причины дают разные классы сетевых ошибок.
- Зафиксируйте фазу socket lifecycle: создание, bind, connect, send, receive или shutdown; одинаковый endpoint проверяется по-разному на каждой фазе.
- Сохраните local и remote address, family, socket type, protocol, blocking mode и состояние интерфейса до закрытия объекта.
- Для Linux сопоставьте событие с process/thread, descriptor и точным syscall; после retry проверьте, не изменился ли объект под тем же числовым дескриптором.
Практическая проверка
Для проверки создайте минимальный bind на тот же адрес и порт и одновременно снимите список listeners и активных соединений. Если порт освобождается только после завершения предыдущего процесса или истечения transport state, проблема относится к ownership/lifecycle endpoint. Если занятость сохраняется без ожидаемого владельца, исследуйте namespace, wildcard binding и правила повторного использования адреса.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.