Устранение ошибки «Адрес Linux уже используется»: методы и примеры кода

«Адрес Linux уже используется» — это сообщение об ошибке, которое обычно появляется, когда вы пытаетесь привязать сетевой сокет к IP-адресу и порту, которые уже используются другим процессом. Чтобы решить эту проблему, вы можете попробовать следующие методы с примерами кода:

Метод 1. Найдите и завершите процесс по адресу.
Вы можете использовать команду lsof, чтобы найти процесс, использующий адрес, а затем завершить его. Вот пример:

$ sudo lsof -i :<port_number>

Замените фактическим номером порта, который вы пытаетесь использовать. Команда отобразит идентификатор процесса (PID) процесса, использующего этот порт. Затем вы можете завершить процесс с помощью команды kill:

$ sudo kill <PID>

Замените идентификатором процесса, полученным из предыдущей команды.

Метод 2. Измените номер порта.
Если вам не нужно использовать определенный порт, вы можете выбрать другой номер порта, который не используется. Вот пример того, как изменить номер порта в Python:

import socket
HOST = '0.0.0.0'
PORT = <new_port_number>
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    # Rest of your code

Замените на нужный номер порта.

Метод 3: дождитесь освобождения адреса.
Иногда адрес все еще используется, но вскоре будет освобожден. В таких случаях вы можете немного подождать и повторить операцию. Вот пример на Python:

import socket
import time
HOST = '0.0.0.0'
PORT = <port_number>
while True:
    try:
        with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
            s.bind((HOST, PORT))
            # Rest of your code
            break
    except OSError as e:
        if "Address already in use" in str(e):
            print("Address is already in use. Retrying in 5 seconds...")
            time.sleep(5)
        else:
            raise e

Замените на нужный номер порта.