Có khả năng cả hai liên kết TCP và RUDP của bạn sẽ bị phá vỡ bởi môi trường của bạn, vì vậy thực tế là bạn đang sử dụng RUDP sẽ không giúp được điều đó; có thể sẽ có lúc không có gói dữ liệu nào có thể vượt qua được ...
Điều bạn thực sự cần đảm bảo là a) bạn có thể xử lý số lượng khách hàng được kết nối, b) giao thức ứng dụng của bạn có thể phát hiện một cách hợp lý một cách nhanh chóng khi bạn đã mất kết nối với một máy khách (hoặc máy chủ) và c) bạn có thể xử lý việc kết nối lại cần thiết và duy trì trạng thái phiên kết nối chéo cho các máy khách.
Miễn là bạn đối phó với b) và c) nó không thực sự quan trọng nếu kết nối tiếp tục bị hỏng. Hãy chắc chắn rằng bạn thiết kế giao thức ứng dụng của bạn để bạn có thể hoàn thành công việc theo các đợt ngắn; vì vậy nếu bạn đang tải lên các tệp, hãy đảm bảo rằng bạn đang gửi các khối nhỏ và giao thức ứng dụng có thể tiếp tục chuyển giao đã bị hỏng một nửa; bạn không muốn nhận 99% số tiền thông qua chuyển 2gb và mất kết nối và phải bắt đầu lại.
Để làm việc này, máy chủ của bạn cần một loại bộ nhớ cache trạng thái phiên khách hàng, nơi bạn có thể giữ trạng thái logic của kết nối của khách hàng vượt quá vòng đời của kết nối. Thiết kế từ đầu để mong đợi một phiên nhất định để bao gồm nhiều kết nối riêng biệt. Trạng thái phiên có thể có một số loại thời gian chờ vì vậy nếu khách hàng biến mất trong thời gian nó không tiếp tục tiêu thụ tài nguyên trên máy chủ nhưng, thành thật mà nói, nó có thể chỉ đơn giản là một trường hợp lưu trạng thái ra khỏi đĩa sau một lúc.
Tóm lại, tôi không nghĩ rằng sự lựa chọn của các vấn đề vận chuyển và tôi muốn đi với TCP ít nhất là để bắt đầu. Điều thực sự quan trọng là có thể quản lý trạng thái phiên của máy khách trên máy chủ và xử lý thực tế là các máy khách sẽ kết nối và ngắt kết nối thường xuyên.
Nguồn
2010-11-15 08:25:56
Bạn cũng có thể quan tâm đến việc kiểm tra câu hỏi này: [Bạn sử dụng gì khi bạn cần UDP đáng tin cậy?] (Http://stackoverflow.com/questions/107668/what-do-you-use-when-you -need-trusted-udp) –