Tôi đang viết kết nối websocket giữa plugin chrome và ứng dụng dành cho máy tính để bàn, chúng chỉ liên lạc với nhau cục bộ. Tôi biết bạn không thể có hai ổ cắm nghe trên cùng một cổng (điều này có đúng với tất cả các cổng không?)
Đối với hầu hết người dùng của tôi, xung đột cổng sẽ không xảy ra, nhưng ứng dụng sẽ chạy trên vài nghìn máy. Tôi nghĩ rằng tôi có thể mong đợi một cách hợp lý rằng xung đột sẽ xảy ra trong trường hợp hiếm hoi khi một ứng dụng khác đang chiếm giữ cổng.
Các ứng dụng lớn hơn xử lý vấn đề tiềm ẩn này như thế nào? Tôi khá xa lạ với lập trình mạng và ổ cắm (mạng) nói chung.
Tôi đoán có một số cách giải quyết phi kỹ thuật như thế này:
- Ghi lại sự cố và để bộ phận hỗ trợ xử lý nó
- Cho phép người dùng định cấu hình cổng
Nhưng nếu có thể, tôi muốn có một cách xử lý kỹ thuật hợp lý hơn. Tôi có thể nghĩ ra một số thuật toán để thử một số cổng được định cấu hình trước, nhưng tôi muốn đây là một vấn đề phổ biến trong ngành và tôi muốn hiểu sự đồng thuận về vấn đề này là gì.
Câu hỏi này chủ yếu không liên quan đến công nghệ, nhưng nếu có vấn đề thì ngăn xếp của tôi là python và thư viện websockets nàyTrên máy tính để bàn, tất nhiên là có JavaScript phía máy khách.
Tôi thấy không có lý do gì để suy nghĩ quá nhiều về nó. Một danh sách có vẻ vô lý chiếm lĩnhLời nhắc về cổng dự phòng và cổng được chỉ định cuối cùng sẽ ổn. Nếu cả hai bên đều có khả năng HDD IO (không biết plug-in chrome có thể làm được bao nhiêu) thì plug-in và ứng dụng sẽ dễ dàng hài lòng hơn.
Bạn cũng có thể thêm các giao diện loopback bổ sung cho cả hai ứng dụng trên cùng một máy chủ. Example .
Nếu chúng ta nói về các mạng lớn, có một lớp được gọi làGiao thức khám phá dịch vụCó thể giúp giải quyết loại vấn đề này. Về cơ bản, chúng là các giao thức multicast dựa trên IP hoặc UDP quảng cáo các dịch vụ khác nhau trên mạng. Thông thường, các giao thức này có cổng giao tiếp được tiêu chuẩn hóa và do đó ít có khả năng bị các ứng dụng khác chiếm giữ. Ví dụ: DHCP, Bonjour.
Tuy nhiên, xử lý xung đột cổng không phải là chức năng chính của chúng. Trong một mạng lớn, các máy phải nằm dưới sự kiểm soát nào đó và không nên có quá nhiều ứng dụng lấy các cổng ngẫu nhiên. Nếu có xung đột với ứng dụng của bên thứ ba, giải pháp lý tưởng là tìm kiếm cài đặt cho phép đặt cổng theo cách thủ công.
Tôi là một lập trình viên xuất sắc, rất giỏi!