Ištaisykite „Python Socket“ klaidą 48
„Socket Error 48“ yra pitono klaida, kuri suveikia, kai procesas bando susieti save su jau naudojamu prievadu.
Kas sukelia „socket.error: [Errno 48] Address jau naudojamas“ klaidą?
Po trumpų tyrimų mes nustatėme priežastis:
- Procesas, susietas su uostu:Kai serveryje sukuriamas procesas, jis naudoja prievadą ryšiui su internetu. Uostas yra tarsi šeimininkas, kuris vienu metu gali linksminti vieną svečią. Tačiau, jei nenurodote uosto, serveris jį tiesiog sukuria numatytame uoste. Kitą kartą kuriant procesą, reikia nurodyti prievadą, nes numatytasis prievadas jau naudojamas.
1 sprendimas: nurodykite prievado numerį
Klaida dažniausiai įvyksta, kai asmuo bando susieti konkretų procesą su numatytuoju prievadu, o numatytasis prievadas jau yra susietas su kitu procesu. Todėl šiame žingsnyje mes nurodysime prievadą, kuriame bus ribojamas procesas.
- Yra tikimybė, kad procesui sukurti naudojate šią komandą.
$ python -m „SimpleHTTPServer“
- Užuot naudoję šią komandą, sukurkite procesą.
$ python -m paprastas HTTPServeris (prievado numeris)
- Palaukite, kol bus sukurtas procesas, ir patikrinkite, ar problema išlieka.
2 sprendimas: atlaisvinti uostą
Jei uostą jau naudoja kitas procesas, naujasis procesas negalės veikti tame uoste. Todėl šiame etape mes atlaisvinsime uostą nutraukdami ankstesnį procesą ir tada paleisdami naują. Už tai:
- Naudokite šią komandą, norėdami išvardyti keletą procesų naudodami konkretų prievadą.
$ ps -fA | grep pitonas
- Komandos argumentas atrodys panašiai kaip šios eilutės.
601 88234 12788 0 21:53 ttys000 0: 00.16 python -m SimpleHTTPServer
- Proceso kodas, kurį naudosime nužudymui, yra „88234“.
- Norėdami užmušti procesą, naudokite šią komandą.
nužudyk 88234
Arba galite naudoti šią komandą, kad ją užmuštumėte.
sudo kill -9 PID
- Dabar galite susieti procesą su šiuo prievadu naudodami šią komandą.
$ python -m paprastas HTTPServeris (prievado numeris)
- Dabar procesas bus sukurtas.
3 sprendimas: Paleiskite „Raspberry Pi“ iš naujo (tik „Raspberry Pi“)
Galite atsikratyti šios „Raspberry Pi“ klaidos iš naujo paleisdami „Raspberry Pi“ arba nužudydami terminalo apvalkalą. „Raspberry Pi“ kartais negali automatiškai užmušti procesų ir sukelia šią klaidą dėl ankstesnių procesų, jau veikiančių uostuose.