Correggi l'errore 48 del socket Python

Socket Error 48 è un errore Python che viene attivato quando il processo tenta di collegarsi a una porta che è già in uso.

Cosa causa l'errore "socket.error: [Errno 48] Address already in use"?

Dopo una breve ricerca, abbiamo scoperto che le cause sono:

  • Processo associato alla porta:  ogni volta che viene creato un processo sul server, viene utilizzata una porta per comunicare con Internet. Il porto è come un host che può intrattenere un ospite alla volta. Tuttavia, se non specifichi una porta, il server la crea semplicemente sulla porta predefinita. La prossima volta che si crea un processo, è necessario specificare una porta perché la porta predefinita è già in uso.

Soluzione 1: specificare il numero di porta

L'errore si verifica principalmente quando una persona tenta di collegare un processo specifico alla porta predefinita e la porta predefinita è già associata a un processo diverso. Pertanto, in questo passaggio, specificheremo la porta su cui il processo deve essere limitato.

  1. È probabile che tu stia utilizzando il seguente comando per creare un processo.
     $ python -m SimpleHTTPServer
  2. Invece di questo, usa questo comando per creare un processo.
     $ python -m SimpleHTTPServer (Numero porta)
  3. Attendi la creazione del processo e verifica se il problema persiste.

Soluzione 2: liberare la porta

Se la porta è già utilizzata da un processo diverso, il nuovo processo non sarà in grado di funzionare su quella porta. Pertanto, in questo passaggio, libereremo la porta terminando il processo precedente e quindi eseguendo quello nuovo. Per quello:

  1. Utilizzare il comando seguente per elencare una serie di processi che utilizzano una porta specifica.
    $ ps -fA | grep python
  2. L'argomento del comando avrà un aspetto simile alle seguenti righe.
     601 88234 12788 0 9:53 PM ttys000 0: 00.16 python -m SimpleHTTPServer
  3. Di conseguenza, il codice di processo che useremo per uccidere è "88234".
  4. Usa il seguente comando per terminare il processo.
    uccidere 88234

    In alternativa, puoi usare il seguente comando per ucciderlo.

    sudo kill -9 PID
  5. È ora possibile collegare il processo a questa porta utilizzando il comando seguente.
     $ python -m SimpleHTTPServer (Numero porta)
  6. Il processo verrà ora creato.

Soluzione 3: riavvio di Raspberry Pi (solo per Raspberry Pi)

Puoi eliminare questo errore su Raspberry Pi riavviando il Raspberry Pi o uccidendo la shell del terminale. Il Raspberry Pi a volte non è in grado di uccidere automaticamente i processi e attiva questo errore a causa dei processi precedenti già in esecuzione sulle porte.