Ištaisykite „Python Socket“ klaidą 48



Išbandykite Mūsų Instrumentą, Kaip Pašalinti Problemas

„Socket Error 48“ yra pitono klaida, kuri suveikia, kai procesas bando susieti save su jau naudojamu prievadu.



Serveriai



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. Kai kitą kartą sukursite 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 procesas bus ribojamas.

  1. Yra tikimybė, kad procesui sukurti naudojate šią komandą.
    $ python -m „SimpleHTTPServer“
  2. Užuot naudoję šią komandą, sukurkite procesą.
    $ python -m paprastas HTTPServeris (prievado numeris)
  3. Palaukite, kol bus sukurtas procesas, ir patikrinkite, ar problema išlieka.

2 sprendimas: atlaisvinti uostą

Jei uostas jau naudojamas kitame procese, naujasis procesas negalės veikti tame uoste. Todėl šiame etape mes atlaisvinsime uostą nutraukdami ankstesnį procesą ir tada paleisdami naują. Už tai:

  1. Naudokite šią komandą, norėdami išvardyti keletą procesų naudodami konkretų prievadą.
    $ ps -fA | grep pitonas
  2. Komandos argumentas atrodys panašiai kaip šios eilutės.
    601 88234 12788 0 21:53 ttys000 0: 00.16 python -m SimpleHTTPServer
  3. Proceso kodas, kurį naudosime nužudymui, yra „88234“.
  4. 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
  5. Dabar galite susieti procesą su šiuo prievadu naudodami šią komandą.
    $ python -m paprastas HTTPServeris (prievado numeris)
  6. Dabar procesas bus sukurtas.

3 sprendimas: Paleiskite „Raspberry Pi“ iš naujo (tik „Raspberry Pi“)

Galite atsikratyti šios klaidos Avietė Pi paleisdami iš naujo „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.

1 minutė perskaityta