Trong Java, tôi cần lấy một số cổng để liên lạc giữa nhiều phiên bản của cùng một chương trình. Bây giờ, tôi có thể chỉ cần chọn một số số cố định và đi với nó. Nhưng tôi tự hỏi nếu có một cách để tự động chọn số cổng, vì vậy mà tôi không phải bận tâm người dùng của tôi với thiết lập số cổng.Tự động chọn số cổng?
Dưới đây là một ý tưởng tôi đã có, trong đó hoạt động như thế này:
- Có một số cổng ban đầu cố định A.
- Chương trình bắt đầu 'MyApp', cố gắng để lấy cổng A.
- Nếu nó thành công , đó là ví dụ đầu tiên của 'MyApp'. Làm xong.
- Nếu không thành công, nó sẽ hỏi qua cổng A cho dù chương trình trên A là một phiên bản của 'MyApp'. Nếu có, hãy liên lạc với trường hợp đó. Làm xong. Nếu không, hãy thử lấy cổng A + 1. Và nếu có một chương trình khác sử dụng cổng đó (không phải là phiên bản của 'MyApp'), thì hãy lấy A + 2, rồi A + 3, v.v.
Chiến lược này có hợp lý không? Hoặc là có một cách tốt hơn để tự động chọn một số cổng?
Bạn không cần phải làm như vậy. Nếu bạn tạo một ổ cắm, hệ thống sẽ tự động gán số cổng sẵn có tiếp theo cho bạn. Vui lòng đọc kỹ tài liệu về API ổ cắm bạn đang sử dụng. Cũng cung cấp thêm thẻ về ngôn ngữ lập trình/thư viện bạn đang sử dụng. –
@dma_k: Trong Java, dường như bạn phải liên kết với cổng 0 để đạt được điều đó (truy cập trực quan, tôi biết). Nếu bạn không ràng buộc chút nào, bạn sẽ không thể nghe nó. :-P –
Khá nhiều việc thực hiện socket tôi có thể nhớ sử dụng thủ thuật "phản trực giác" này để yêu cầu một cổng được gán động ... không có gì đặc biệt ở đây. – jldupont