cuốn sách gpt4 ai đã làm

Java:服务器/客户端 -> 客户端/客户端

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 08:54:52 26 4
mua khóa gpt4 Nike

Tôi muốn thiết lập kết nối ngang hàng giữa một số máy tính để người dùng có thể trò chuyện và trao đổi tập tin mà không cần máy chủ bên ngoài. Suy nghĩ đầu tiên của tôi là như sau:

Tôi đã tạo một ServerSocket trung tâm trên máy chủ để tất cả các ứng dụng có thể kết nối. ServerSocket này theo dõi các ổ cắm (máy khách) được kết nối và cung cấp IP và cổng của các máy khách mới được kết nối cho tất cả các máy khách khác. Mỗi máy khách tạo một ServerSocket mới mà tất cả máy khách có thể kết nối.

nhập mô tả hình ảnh ở đây

Nói cách khác: mỗi máy khách có một ServerSocket và tất cả các máy khách khác kết nối với nó. Tin nhắn phải được chuyển qua đường màu xanh lam trong hình ảnh.

Tôi gặp phải một vấn đề nhỏ: nếu tôi kiểm tra nó với tất cả các địa chỉ IP khác nhau thì nó hoạt động tốt, nhưng khi hai máy khách có cùng địa chỉ IP (bên ngoài) thì nó không hoạt động nữa. Có ai biết một giải pháp thông minh cho việc này?

Cảm ơn!

câu trả lời hay nhất

Khi máy chủ ở phía sau bộ định tuyến NAT và muốn mở một cổng máy chủ có thể truy cập được từ phía bên kia của NAT, bộ định tuyến NAT phải được cấu hình để chuyển tiếp tất cả các kết nối đến trên cổng này tới máy chủ này.

Rõ ràng, bộ định tuyến NAT không thể được cấu hình để thực hiện việc này cho hai máy chủ khác nhau đang nghe trên cùng một cổng. Nó không biết máy chủ nào sẽ xử lý từng kết nối đến. Khi có hai máy chủ phía sau NAT, chúng phải sử dụng các cổng khác nhau và bộ định tuyến NAT phải được cấu hình để chuyển tiếp từng cổng đến từng máy chủ.

Đây là sự cố đã biết với mạng ngang hàng. Do đó, chỉ có thể kết nối trực tiếp giữa hai máy khách phía sau NAT nếu ít nhất một NAT được định cấu hình làm chuyển tiếp cổng và do đó có thể hoạt động như một máy chủ cho máy khách kia.

解决方案:

Giải pháp thay thế cho hai máy khách có kết nối bị khóa sau NAT không chuyển tiếp là thêm khả năng sử dụng máy khách thứ ba có khả năng của máy chủ làm người trung gian giữa chúng.

Khi hai máy khách có cùng một NAT, chúng có thể trao đổi IP LAN của mình thông qua máy chủ trung tâm và sử dụng chúng để kết nối với nhau.

Về Java: Máy chủ/Máy khách -> Máy khách/Máy khách, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/13530106/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress