2011-09-01 42 views
16

Chúng tôi có một ứng dụng tùy chỉnh cần phân phối các yêu cầu trên số cổng riêng của nó. Chúng tôi thực sự không quan tâm số lượng là gì, mặc dù chúng tôi sẽ dính vào cổng đó sau khi chúng tôi quyết định. Làm cách nào để chọn một số có khả năng xung đột với các ứng dụng hoặc dịch vụ khác đang chạy trên hệ thống của người dùng?Cách chọn số cổng tĩnh cho ứng dụng tùy chỉnh?

Có bất kỳ quy tắc hoặc tiêu chuẩn nào mà chúng tôi nên tuân thủ không?

Làm rõ: khi chúng tôi chọn một cổng, chúng tôi cần phải gắn bó với nó. Không thể sử dụng tính năng động. Chúng tôi đang xây dựng một máy chủ SFTP tùy chỉnh và chúng tôi sẽ phải thông báo cho khách hàng biết cổng đang chạy trên máy chủ nào.

+0

Làm rõ: khi chúng tôi chọn một cổng, chúng tôi cần phải gắn bó với nó. Không thể sử dụng tính năng động. Chúng tôi đang xây dựng một máy chủ SFTP tùy chỉnh và chúng tôi sẽ phải thông báo cho khách hàng biết cổng đang chạy trên máy chủ nào. – ccleve

Trả lời

8

Nếu bạn không thể dự đoán chính xác loại môi trường mà ứng dụng của bạn sẽ chạy, chỉ cần ' t bận tâm với điều này. Chọn bất kỳ số nào trên 1024 và cũng có thể định cấu hình số đó để người dùng có thể thay đổi số này trong trường hợp xung đột với một dịch vụ/ứng dụng khác.

Tất nhiên bạn vẫn có thể tránh các cổng rất phổ biến như 8080 (HTTP thay thế) hoặc 3128 (proxy như mực), 1666 (lực lượng), v.v. Bạn có thể kiểm tra danh sách toàn diện các cổng đã biết here hoặc xem/etc/services.

12

Đối với ứng dụng tĩnh, hãy xem xét kiểm tra /etc/services để tìm cổng sẽ không va chạm với bất kỳ thứ gì khác bạn đang sử dụng và không được sử dụng phổ biến ở nơi khác.

$ tail /etc/services 
nimspooler  48001/udp      # Nimbus Spooler 
nimhub   48002/tcp      # Nimbus Hub 
nimhub   48002/udp      # Nimbus Hub 
nimgtw   48003/tcp      # Nimbus Gateway 
nimgtw   48003/udp      # Nimbus Gateway 
com-bardac-dw 48556/tcp      # com-bardac-dw 
com-bardac-dw 48556/udp      # com-bardac-dw 
iqobject  48619/tcp      # iqobject 
iqobject  48619/udp      # iqobject 
6

Nếu bạn không quan tâm đến số cổng và không nhớ rằng nó thay đổi mỗi khi chương trình của bạn chạy, chỉ cần không gắn cổng trước khi bạn nghe nó (hoặc liên kết với cổng 0, nếu bạn muốn ràng buộc một địa chỉ IP cụ thể). Trong cả hai trường hợp, bạn đang yêu cầu hệ điều hành chọn một cổng miễn phí cho bạn.

Sau khi bạn bắt đầu nghe, hãy sử dụng getsockname để tìm hiểu cổng nào đã được chọn. Bạn có thể viết nó vào một tập tin, hiển thị trên tập tin trên màn hình, để trẻ kế thừa nó qua fork, v.v.

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