2011-12-22 23 views
13

thể trùng lặp:
On localhost, how to pick a free port number?Cách chọn số cổng miễn phí trong python?

Yêu cầu của tôi là khác biệt so với câu hỏi này.

On localhost, how to pick a free port number?

Tôi viết thư này một thiết lập thử nghiệm của một quá trình sử dụng python. Quá trình khác cần một số cổng được chuyển (nói như một tham số dòng lệnh). Tôi không thể mã hóa một số số cổng ngẫu nhiên vì nhiều người dùng thường chạy cùng một thử nghiệm trong cùng một hộp. Bây giờ, làm thế nào để tôi chọn một cổng miễn phí trong python?

Edit:

tôi không tạo ra một ổ cắm trong python. Tôi chỉ cần chuyển một số cho một số quy trình khác như một đối số dòng lệnh.

Từ câu trả lời của DRH, Tôi có thể tạo ổ cắm giả, nhận số cổng của nó, đóng nó và chuyển sang quy trình thực tế. Có cách nào tốt hơn để làm điều này không?

+4

Yêu cầu của bạn khác nhau theo cách nào? – wim

+1

Tôi không tạo ra một ổ cắm trong python. Vì vậy, làm thế nào để tôi yêu cầu hệ điều hành để cung cấp cho một cổng miễn phí? Tôi chỉ cần chuyển số đó đến một số quy trình khác như một đối số dòng lệnh. – balki

+0

Tôi không chắc chắn về việc yêu cầu hệ điều hành cho một số cổng miễn phí. Nếu bạn hỏi nhiều lần mà không cần mở ổ cắm thì sao? Có đảm bảo rằng bạn sẽ nhận được số cổng khác nhau trên mỗi yêu cầu không? – jcollado

Trả lời

12

Có thể không phải là cách an toàn để thực hiện những gì bạn đang yêu cầu. Ngay cả khi hệ điều hành có thể trả lại một cổng cho bạn hiện đang miễn phí, không có gì đảm bảo rằng một quá trình khác sẽ không ràng buộc một ổ cắm vào cổng đó giữa thời gian bạn yêu cầu cổng và khi ứng dụng bạn gọi các nỗ lực liên kết với nó.

Cho rằng, nếu bạn chỉ đang tìm một cổng có khả năng miễn phí, bạn có thể liên kết với cổng 0 như được mô tả ở đây On localhost, how to pick a free port number?, đóng ổ cắm kết quả (giải phóng cổng) và sau đó chuyển giá trị đó cho ứng dụng của bạn .

+0

Tôi nghĩ rằng một quá trình nhận được rằng cổng trong khi đó sẽ là hiếm. Vì vậy, tôi sẽ đi với nó. Dù sao tôi đã mong đợi một cách tốt hơn để yêu cầu các os thay vì tạo ra một ổ cắm giả và đóng nó. – balki

+7

Để lưu nội dung, đây là việc triển khai đề xuất đó: https://gist.github.com/3979133 –

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