Fix Python Socket Error 48



Probeer Ons Instrument Voor Het Oplossen Van Problemen

Socket Error 48 is een python-fout die wordt geactiveerd wanneer het proces zichzelf probeert te binden aan een poort die al in gebruik is.



Servers



Wat veroorzaakt de fout 'socket.error: [Errno 48] Adres al in gebruik'?

Na kort onderzoek hebben we vastgesteld dat de oorzaken zijn:



  • Proces gebonden aan poort: Telkens wanneer een proces op de server wordt gemaakt, wordt een poort door deze gebruikt om met internet te communiceren. De haven is als een gastheer die één gast tegelijk kan vermaken. Als u echter geen poort opgeeft, maakt de server deze gewoon op de standaardpoort. De volgende keer dat u een proces maakt, moet een poort worden opgegeven omdat de standaardpoort al in gebruik is.

Oplossing 1: poortnummer specificeren

De fout wordt meestal geactiveerd wanneer een persoon probeert een specifiek proces aan de standaardpoort te koppelen en de standaardpoort al aan een ander proces is gebonden. Daarom zullen we in deze stap de poort specificeren waarop het proces moet worden begrensd.

  1. De kans is groot dat u de volgende opdracht gebruikt om een ​​proces te maken.
    $ python -m SimpleHTTPServer
  2. Gebruik in plaats daarvan deze opdracht om een ​​proces te maken.
    $ python -m SimpleHTTPServer (poortnummer)
  3. Wacht tot het proces is gemaakt en controleer of het probleem zich blijft voordoen.

Oplossing 2: de poort vrijmaken

Als het haven al in gebruik is door een ander proces, zal het nieuwe proces niet op die poort kunnen functioneren. Daarom maken we in deze stap de poort vrij door het vorige proces te beëindigen en vervolgens het nieuwe uit te voeren. Daarom:

  1. Gebruik de volgende opdracht om een ​​aantal processen weer te geven die een specifieke poort gebruiken.
    $ ps -fA | grep python
  2. Het commando-argument ziet er ongeveer zo uit als de volgende regels.
    601 88234 12788 0 21:53 ttys000 0: 00.16 python -m SimpleHTTPServer
  3. Hiervan is de procescode die we zullen gebruiken om te doden “88234”.
  4. Gebruik de volgende opdracht om het proces te beëindigen.
    vermoord 88234

    Als alternatief kunt u de volgende opdracht gebruiken om het te doden.



    sudo kill -9 PID
  5. U kunt het proces nu aan deze poort binden door de volgende opdracht te gebruiken.
    $ python -m SimpleHTTPServer (poortnummer)
  6. Het proces wordt nu gemaakt.

Oplossing 3: Raspberry Pi opnieuw opstarten (alleen voor Raspberry Pi)

U kunt deze fout verhelpen op Raspberry Pi door de Raspberry Pi opnieuw op te starten of door de terminale shell te doden. De Raspberry Pi kan de processen soms niet automatisch beëindigen en activeert deze fout vanwege de eerdere processen die al op de poorten worden uitgevoerd.

1 minuut gelezen