Javítsa ki a Python Socket 48 hibát

A Socket Error 48 egy python hiba, amely akkor jelenik meg, amikor a folyamat megpróbálja lekötni magát egy már használt porthoz.

Mi okozza a „socket.error: [Errno 48] cím már használatban van” hibát?

Rövid kutatás után a következőket találtuk:

  • Folyamat kötve a portra:  Amikor folyamat jön létre a szerveren, egy portot használ arra, hogy kommunikáljon az internettel. A kikötő olyan, mint egy vendéglátó, amely egyszerre egy vendéget tud szórakoztatni. Ha azonban nem ad meg portot, akkor a szerver csak létrehozza azt az alapértelmezett porton. A folyamat következő létrehozásakor meg kell adni egy portot, mert az alapértelmezett port már használatban van.

1. megoldás: A portszám megadása

A hiba többnyire akkor vált ki, amikor egy személy megpróbál egy adott folyamatot az alapértelmezett porthoz kötni, és az alapértelmezett port már más folyamathoz van kötve. Ezért ebben a lépésben meghatározzuk azt a portot, amelyre a folyamatot be kell kötni.

  1. Valószínű, hogy a következő parancsot használja egy folyamat létrehozásához.
     $ python -m SimpleHTTPServer
  2. Ehelyett ezzel a paranccsal hozzon létre egy folyamatot.
     $ python -m SimpleHTTPServer (portszám)
  3. Várja meg a folyamat létrehozását, és ellenőrizze, hogy a probléma továbbra is fennáll-e.

2. megoldás: A Port felszabadítása

Ha a portot már más folyamat használja, akkor az új folyamat nem fog tudni működni ezen a porton. Ezért ebben a lépésben felszabadítjuk a portot az előző folyamat leállításával, majd az új futtatásával. Azért:

  1. A következő paranccsal számos folyamatot felsorolhat egy adott port használatával.
    $ ps -fA | grep python
  2. A parancs argumentuma a következő sorokhoz hasonlóan fog kinézni.
     601 88234 12788 0 21:53 ttys000 0: 00.16 python -m SimpleHTTPServer
  3. Ebből az a folyamatkód, amelyet megölni fogunk, a „88234”.
  4. A következő paranccsal megölheti a folyamatot.
    ölje meg 88234-et

    Alternatív megoldásként a következő paranccsal is megölheti.

    sudo kill -9 PID
  5. A folyamatot a következő paranccsal kötheti ehhez a porthoz.
     $ python -m SimpleHTTPServer (portszám)
  6. A folyamat most létrejön.

3. megoldás: A Raspberry Pi újraindítása (csak a Raspberry Pi esetében)

A Raspberry Pi hibáját megszabadíthatja a Raspberry Pi újraindításával vagy a terminálhéj megölésével. A Raspberry Pi néha nem képes automatikusan megölni a folyamatokat, és a portokon már futó korábbi folyamatok miatt kiváltja ezt a hibát.