2011-11-07 69 views
17

Tôi có một người gửi tin nhắn một mặt nhỏ hoạt động trong khi tôi chỉ định ip để kết nối với mã, tuy nhiên, tôi gặp sự cố khi cho phép socket chấp nhận các kết nối từ bất kỳ IP nào. Đây là dòng đó là vấn đề.Khe cắm Python liên kết với bất kỳ IP nào?

mySocket = socket.socket (socket.AF_INET, socket.SOCK_STREAM) 
mySocket.bind (('', 2727)) 

'' dành cho máy chủ cục bộ và hoạt động nếu tôi nhập ip theo cách thủ công, ví dụ: 192.168.1.106, làm cách nào để tôi mở nó? hoặc tôi đang sử dụng loại kết nối sai cho điều này?

Trả lời

28

Nếu bạn muốn liên kết với tất cả các địa chỉ IPv4 có sẵn, hãy chỉ định 0.0.0.0 làm địa chỉ IP của bạn. Nếu bạn đang đứng sau một bộ định tuyến và muốn có ổ cắm internet của bạn, thay vì chỉ có sẵn trên mạng LAN của bạn, bạn sẽ cần thiết lập quy tắc chuyển tiếp cổng để người dùng bên ngoài mạng LAN của bạn có thể truy cập dịch vụ.

Xem câu hỏi ServerFault sau để biết thêm về 0.0.0.0: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

+0

Cảm ơn một nhóm !! – Trent

+0

Hướng dẫn rất rõ ràng! –

+0

Có thể liên kết với ips hoàn toàn tùy chỉnh như 152.64.87.9 không? – CMCDragonkai

4

Binding để 0.0.0.0 sẽ cho phép nó để chấp nhận các kết nối từ bất kỳ địa chỉ IPv4 mà có thể đường đến nó.

9

Ràng buộc với '' có tác dụng tương tự như '0.0.0.0' giúp việc chuyển đổi sang IPv6 dễ dàng hơn.

Tùy thuộc vào hệ điều hành, mở một ổ cắm socket.AF_INET6 nghe IPv4 và IPv6.

Các vấn đề liên quan