Løs Python Socket Error 48
Socket Error 48 er en pythonfeil som utløses når prosessen prøver å binde seg til en port som allerede er i bruk.
Hva forårsaker feilmeldingen “socket.error: [Errno 48] Address allerede i bruk?
Etter kort forskning fant vi årsakene til å være:
- Prosess bundet til havn:Hver gang det opprettes en prosess på serveren, brukes en port av den til å kommunisere med internett. Havnen er som en vert som kan underholde en gjest om gangen. Men hvis du ikke spesifiserer en port, oppretter serveren den bare på standardporten. Neste gang du oppretter en prosess, må en port spesifiseres fordi standardporten allerede er i bruk.
Løsning 1: Spesifisere portnummer
Feilen utløses for det meste når en person prøver å binde en bestemt prosess til standardporten, og standardporten er allerede bundet til en annen prosess. Derfor vil vi i dette trinnet spesifisere porten som prosessen skal begrenses til.
- Sjansen er stor for at du bruker følgende kommando for å lage en prosess.
$ python -m SimpleHTTPServer
- I stedet for dette, bruk denne kommandoen for å lage en prosess.
$ python -m SimpleHTTPServer (portnummer)
- Vent til prosessen blir opprettet, og sjekk om problemet vedvarer.
Løsning 2: Frigjør porten
Hvis porten allerede er i bruk av en annen prosess, vil den nye prosessen ikke kunne fungere på den porten. Derfor vil vi i dette trinnet frigjøre havnen ved å avslutte den forrige prosessen og deretter kjøre den nye. For det:
- Bruk følgende kommando for å liste opp et antall prosesser som bruker en bestemt port.
$ ps -fA | grep python
- Kommandoargumentet vil se ut som følgende linjer.
601 88234 12788 0 21:53 ttys000 0: 00.16 python -m SimpleHTTPServer
- Ut av dette er prosesskoden som vi vil bruke til å drepe “88234”.
- Bruk følgende kommando for å drepe prosessen.
drep 88234
Alternativt kan du bruke følgende kommando for å drepe den.
sudo kill -9 PID
- Du kan nå binde prosessen til denne porten ved å bruke følgende kommando.
$ python-m SimpleHTTPServer (portnummer)
- Prosessen vil nå bli opprettet.
Løsning 3: Start Raspberry Pi på nytt (bare for Raspberry Pi)
Du kan kvitte deg med denne feilen på Raspberry Pi ved å starte Raspberry Pi på nytt eller ved å drepe terminalskallet. Raspberry Pi kan noen ganger ikke drepe prosessene automatisk og utløser denne feilen på grunn av de tidligere prosessene som allerede kjører på portene.