Remediați eroarea 48 a soclului Python

Socket Error 48 este o eroare python care este declanșată atunci când procesul încearcă să se lege de un port care este deja utilizat.

Ce cauzează eroarea „socket.error: [Errno 48] Adresa deja în uz”?

După scurte cercetări, am constatat că cauzele sunt:

  • Proces Bound to Port:  Ori de câte ori este creat un proces pe server, un port este utilizat de acesta pentru a comunica cu internetul. Portul este ca o gazdă care poate distra câte un oaspete. Cu toate acestea, dacă nu specificați un port, serverul îl creează doar pe portul implicit. Data viitoare când creați un proces, trebuie specificat un port, deoarece portul implicit este deja utilizat.

Soluția 1: specificarea numărului de port

Eroarea este declanșată mai ales atunci când o persoană încearcă să lege un anumit proces la portul implicit, iar portul implicit este deja legat de un proces diferit. Prin urmare, în acest pas, vom specifica portul pe care urmează să fie delimitat procesul.

  1. Este posibil să utilizați următoarea comandă pentru a crea un proces.
     $ python -m SimpleHTTPServer
  2. În loc de aceasta, utilizați această comandă pentru a crea un proces.
     $ python -m SimpleHTTPServer (Număr port)
  3. Așteptați să fie creat procesul și verificați dacă problema persistă.

Soluția 2: Eliberarea portului

Dacă portul este deja utilizat de un alt proces, noul proces nu va putea funcționa pe acel port. Prin urmare, în acest pas, vom elibera portul terminând procesul anterior și apoi executând noul. Pentru asta:

  1. Utilizați următoarea comandă pentru a enumera un număr de procese care utilizează un anumit port.
    $ ps -fA | grep python
  2. Argumentul de comandă va arăta ceva asemănător cu următoarele rânduri.
     601 88234 12788 0 21:53 ttys000 0: 00.16 python -m SimpleHTTPServer
  3. Dintre acestea, codul de proces pe care îl vom folosi pentru a ucide este „88234”.
  4. Utilizați următoarea comandă pentru a elimina procesul.
    ucide 88234

    Alternativ, puteți utiliza următoarea comandă pentru a o ucide.

    sudo kill -9 PID
  5. Acum puteți lega procesul de acest port utilizând următoarea comandă.
     $ python -m SimpleHTTPServer (Număr port)
  6. Procesul va fi creat acum.

Soluția 3: Repornirea Raspberry Pi (numai pentru Raspberry Pi)

Puteți scăpa de această eroare pe Raspberry Pi prin repornirea Raspberry Pi sau prin uciderea shell-ului terminalului. Raspberry Pi uneori nu poate ucide procesele în mod automat și declanșează această eroare din cauza proceselor anterioare care rulează deja pe porturi.