Fix Python Socket-fejl 48

Socket Error 48 er en pythonfejl, der udløses, når processen forsøger at binde sig til en port, der allerede er i brug.

Hvad forårsager “socket.error: [Errno 48] Adresse allerede i brug” Fejl?

Efter kort undersøgelse fandt vi årsagerne til at være:

  • Process bundet til havn:Hver gang der oprettes en proces på serveren, bruges en port af den til at kommunikere med internettet. Havnen er som en vært, der kan underholde en gæst ad gangen. Men hvis du ikke angiver en port, opretter serveren den bare på standardporten. Næste gang du opretter en proces, skal der angives en port, fordi standardporten allerede er i brug.

Løsning 1: Angivelse af portnummer

Fejlen udløses for det meste, når en person forsøger at binde en bestemt proces til standardporten, og standardporten allerede er bundet til en anden proces. Derfor specificerer vi i dette trin den port, som processen skal afgrænses på.

  1. Chancerne er, at du bruger følgende kommando til at oprette en proces.
     $ python -m SimpleHTTPServer
  2. I stedet for dette skal du bruge denne kommando til at oprette en proces.
     $ python-m SimpleHTTPServer (portnummer)
  3. Vent på, at processen oprettes, og kontroller, om problemet fortsætter.

Løsning 2: Frigørelse af havnen

Hvis porten allerede er i brug af en anden proces, vil den nye proces ikke kunne fungere på den port. Derfor frigør vi i dette trin havnen ved at afslutte den forrige proces og derefter køre den nye. For det:

  1. Brug følgende kommando til at liste et antal processer ved hjælp af en bestemt port.
    $ ps -fA | grep python
  2. Kommandoargumentet vil se ud som de følgende linjer.
     601 88234 12788 0 21:53 ttys000 0: 00.16 python -m SimpleHTTPServer
  3. Ud af dette er den proceskode, som vi vil bruge til at dræbe, "88234".
  4. Brug følgende kommando til at dræbe processen.
    dræb 88234

    Alternativt kan du bruge følgende kommando til at dræbe den.

    sudo kill -9 PID
  5. Du kan nu binde processen til denne port ved hjælp af følgende kommando.
     $ python-m SimpleHTTPServer (portnummer)
  6. Processen oprettes nu.

Løsning 3: Genstart af Raspberry Pi (kun til Raspberry Pi)

Du kan slippe af med denne fejl på Raspberry Pi ved at genstarte Raspberry Pi eller ved at dræbe terminalskallen. Raspberry Pi er undertiden ikke i stand til at dræbe processerne automatisk og udløser denne fejl på grund af de tidligere processer, der allerede kører på portene.