Computer >> คอมพิวเตอร์ >  >> ระบบเครือข่าย >> ระบบเครือข่าย

แก้ไข Python Socket Error 48

Socket Error 48 เป็นข้อผิดพลาดของ python ซึ่งเกิดขึ้นเมื่อกระบวนการพยายามผูกตัวเองกับพอร์ตที่มีการใช้งานอยู่แล้ว

แก้ไข Python Socket Error 48

อะไรทำให้เกิดข้อผิดพลาด “socket.error:[Errno 48] มีการใช้ที่อยู่นี้แล้ว” เกิดข้อผิดพลาด

หลังจากการวิจัยสั้น ๆ เราพบว่าสาเหตุคือ:

  • กระบวนการผูกกับพอร์ต:  เมื่อใดก็ตามที่กระบวนการถูกสร้างขึ้นบนเซิร์ฟเวอร์ พอร์ตจะใช้โดยมันเพื่อสื่อสารกับอินเทอร์เน็ต ท่าเรือเป็นเหมือนโฮสต์ที่สามารถให้ความบันเทิงแก่แขกได้ครั้งละหนึ่งคน อย่างไรก็ตาม หากคุณไม่ระบุพอร์ต เซิร์ฟเวอร์ก็จะสร้างขึ้นบนพอร์ตเริ่มต้นเท่านั้น ครั้งต่อไปที่คุณสร้างกระบวนการ คุณต้องระบุพอร์ตเนื่องจากพอร์ตเริ่มต้นถูกใช้งานแล้ว

แนวทางที่ 1:การระบุหมายเลขพอร์ต

ข้อผิดพลาดมักเกิดขึ้นเมื่อบุคคลพยายามผูกกระบวนการเฉพาะกับพอร์ตเริ่มต้น และพอร์ตเริ่มต้นถูกผูกไว้กับกระบวนการอื่นแล้ว ดังนั้น ในขั้นตอนนี้ เราจะระบุพอร์ตที่กระบวนการจะถูกผูกไว้

  1. เป็นไปได้ว่าคุณกำลังใช้คำสั่งต่อไปนี้เพื่อสร้างกระบวนการ
     $ python -m SimpleHTTPServer
  2. แทนที่จะใช้คำสั่งนี้ ให้ใช้คำสั่งนี้เพื่อสร้างกระบวนการ
     $ python -m SimpleHTTPServer (Port Number)
  3. รอให้กระบวนการถูกสร้างขึ้นและตรวจดูว่าปัญหายังคงมีอยู่หรือไม่

แนวทางที่ 2:การปลดปล่อยพอร์ต

หากพอร์ตถูกใช้โดยกระบวนการอื่นอยู่แล้ว กระบวนการใหม่จะไม่สามารถทำงานบนพอร์ตนั้นได้ ดังนั้น ในขั้นตอนนี้ เราจะล้างพอร์ตโดยยกเลิกกระบวนการก่อนหน้าแล้วเรียกใช้กระบวนการใหม่ สำหรับสิ่งนั้น:

  1. ใช้คำสั่งต่อไปนี้เพื่อแสดงรายการกระบวนการจำนวนหนึ่งโดยใช้พอร์ตเฉพาะ
    $ ps -fA | grep python
  2. อาร์กิวเมนต์คำสั่งจะมีลักษณะเหมือนบรรทัดต่อไปนี้
     601 88234 12788 0 9:53PM ttys000 0:00.16 python -m SimpleHTTPServer
  3. จากนี้ โค้ดกระบวนการที่เราจะใช้เพื่อฆ่าคือ “88234”
  4. ใช้คำสั่งต่อไปนี้เพื่อฆ่ากระบวนการ
    kill 88234

    หรือคุณสามารถใช้คำสั่งต่อไปนี้เพื่อฆ่ามัน

    sudo kill -9 PID
  5. ขณะนี้คุณสามารถผูกกระบวนการกับพอร์ตนี้โดยใช้คำสั่งต่อไปนี้
     $ python -m SimpleHTTPServer (Port Number)
  6. ขั้นตอนจะถูกสร้างขึ้น

โซลูชันที่ 3:รีสตาร์ท Raspberry Pi (สำหรับ Raspberry Pi เท่านั้น)

คุณสามารถกำจัดข้อผิดพลาดนี้ใน Raspberry Pi ได้โดยรีสตาร์ท Raspberry Pi หรือโดยการฆ่าเทอร์มินัลเชลล์ Raspberry Pi บางครั้งไม่สามารถฆ่ากระบวนการโดยอัตโนมัติและทำให้เกิดข้อผิดพลาดนี้เนื่องจากกระบวนการก่อนหน้านี้ทำงานอยู่บนพอร์ตแล้ว