Odpravite napako vtičnice Python 48

Socket Error 48 je napaka pythona, ki se sproži, ko se postopek poskuša povezati z vrati, ki so že v uporabi.

Kaj povzroča napako »socket.error: [Errno 48] Naslov je že v uporabi«?

Po kratkih raziskavah smo ugotovili, da so vzroki:

  • Proces vezan na vrata:Kadar koli se na strežniku ustvari postopek, ta uporablja vrata za komunikacijo z internetom. Pristanišče je kot gostitelj, ki lahko zabava enega gosta naenkrat. Če pa ne določite vrat, jih strežnik samo ustvari na privzetih vratih. Ko boste naslednjič ustvarili postopek, morate določiti vrata, ker so privzeta vrata že v uporabi.

1. rešitev: Določitev številke vrat

Napaka se večinoma sproži, ko oseba poskuša določen postopek vezati na privzeta vrata in so privzeta vrata že vezana na drug postopek. Zato bomo v tem koraku določili vrata, na katera naj bo postopek omejen.

  1. Verjetno uporabljate naslednji ukaz za ustvarjanje procesa.
     $ python -m SimpleHTTPServer
  2. Namesto tega uporabite ta ukaz za ustvarjanje procesa.
     $ python -m SimpleHTTPServer (številka vrat)
  3. Počakajte, da se postopek ustvari, in preverite, ali težava še vedno obstaja.

Rešitev 2: Sprostitev vrat

Če vrata že uporablja drug postopek, novi postopek na teh vratih ne bo mogel delovati. Zato bomo v tem koraku sprostili vrata, tako da bomo zaključili prejšnji postopek in nato zagnali novega. Za to:

  1. Uporabite naslednji ukaz za seznam številnih procesov z določenimi vrati.
    $ ps -fA | grep python
  2. Argument ukaza bo videti podobno naslednjim vrsticam.
     601 88234 12788 0 21:53 ttys000 0: 00.16 python -m SimpleHTTPServer
  3. Od tega je procesna koda, ki jo bomo uporabili za ubijanje, »88234«.
  4. Uporabite naslednji ukaz, da ubijete postopek.
    ubiti 88234

    Lahko pa ga uporabite tudi za ubijanje z naslednjim ukazom.

    sudo kill -9 PID
  5. Zdaj lahko postopek vežete na ta vrata z naslednjim ukazom.
     $ python -m SimpleHTTPServer (številka vrat)
  6. Zdaj bo postopek ustvarjen.

3. rešitev: Ponovni zagon Raspberry Pi (samo za Raspberry Pi)

Te napake se lahko znebite v Raspberry Pi tako, da znova zaženete Raspberry Pi ali ubijete lupino terminala. Raspberry Pi včasih ne more samodejno ubiti procesov in sproži to napako zaradi prejšnjih procesov, ki se že izvajajo na vratih.