Socket Error 48 เป็นข้อผิดพลาดของ python ซึ่งเกิดขึ้นเมื่อกระบวนการพยายามผูกตัวเองกับพอร์ตที่มีการใช้งานอยู่แล้ว
อะไรทำให้เกิดข้อผิดพลาด “socket.error:[Errno 48] มีการใช้ที่อยู่นี้แล้ว” เกิดข้อผิดพลาด
หลังจากการวิจัยสั้น ๆ เราพบว่าสาเหตุคือ:
- กระบวนการผูกกับพอร์ต: เมื่อใดก็ตามที่กระบวนการถูกสร้างขึ้นบนเซิร์ฟเวอร์ พอร์ตจะใช้โดยมันเพื่อสื่อสารกับอินเทอร์เน็ต ท่าเรือเป็นเหมือนโฮสต์ที่สามารถให้ความบันเทิงแก่แขกได้ครั้งละหนึ่งคน อย่างไรก็ตาม หากคุณไม่ระบุพอร์ต เซิร์ฟเวอร์ก็จะสร้างขึ้นบนพอร์ตเริ่มต้นเท่านั้น ครั้งต่อไปที่คุณสร้างกระบวนการ คุณต้องระบุพอร์ตเนื่องจากพอร์ตเริ่มต้นถูกใช้งานแล้ว
แนวทางที่ 1:การระบุหมายเลขพอร์ต
ข้อผิดพลาดมักเกิดขึ้นเมื่อบุคคลพยายามผูกกระบวนการเฉพาะกับพอร์ตเริ่มต้น และพอร์ตเริ่มต้นถูกผูกไว้กับกระบวนการอื่นแล้ว ดังนั้น ในขั้นตอนนี้ เราจะระบุพอร์ตที่กระบวนการจะถูกผูกไว้
- เป็นไปได้ว่าคุณกำลังใช้คำสั่งต่อไปนี้เพื่อสร้างกระบวนการ
$ python -m SimpleHTTPServer
- แทนที่จะใช้คำสั่งนี้ ให้ใช้คำสั่งนี้เพื่อสร้างกระบวนการ
$ python -m SimpleHTTPServer (Port Number)
- รอให้กระบวนการถูกสร้างขึ้นและตรวจดูว่าปัญหายังคงมีอยู่หรือไม่
แนวทางที่ 2:การปลดปล่อยพอร์ต
หากพอร์ตถูกใช้โดยกระบวนการอื่นอยู่แล้ว กระบวนการใหม่จะไม่สามารถทำงานบนพอร์ตนั้นได้ ดังนั้น ในขั้นตอนนี้ เราจะล้างพอร์ตโดยยกเลิกกระบวนการก่อนหน้าแล้วเรียกใช้กระบวนการใหม่ สำหรับสิ่งนั้น:
- ใช้คำสั่งต่อไปนี้เพื่อแสดงรายการกระบวนการจำนวนหนึ่งโดยใช้พอร์ตเฉพาะ
$ ps -fA | grep python
- อาร์กิวเมนต์คำสั่งจะมีลักษณะเหมือนบรรทัดต่อไปนี้
601 88234 12788 0 9:53PM ttys000 0:00.16 python -m SimpleHTTPServer
- จากนี้ โค้ดกระบวนการที่เราจะใช้เพื่อฆ่าคือ “88234”
- ใช้คำสั่งต่อไปนี้เพื่อฆ่ากระบวนการ
kill 88234
หรือคุณสามารถใช้คำสั่งต่อไปนี้เพื่อฆ่ามัน
sudo kill -9 PID
- ขณะนี้คุณสามารถผูกกระบวนการกับพอร์ตนี้โดยใช้คำสั่งต่อไปนี้
$ python -m SimpleHTTPServer (Port Number)
- ขั้นตอนจะถูกสร้างขึ้น
โซลูชันที่ 3:รีสตาร์ท Raspberry Pi (สำหรับ Raspberry Pi เท่านั้น)
คุณสามารถกำจัดข้อผิดพลาดนี้ใน Raspberry Pi ได้โดยรีสตาร์ท Raspberry Pi หรือโดยการฆ่าเทอร์มินัลเชลล์ Raspberry Pi บางครั้งไม่สามารถฆ่ากระบวนการโดยอัตโนมัติและทำให้เกิดข้อผิดพลาดนี้เนื่องจากกระบวนการก่อนหน้านี้ทำงานอยู่บนพอร์ตแล้ว