Hầu như tất cả các trò chơi đều cần có các thuộc tính phản ứng nhanh (và ở mức độ thấp hơn, các thuộc tính không kết nối) của UDP và độ tin cậy của TCP. Những gì họ làm là họ xây dựng giao thức đáng tin cậy của riêng mình trên đầu trang của UDP. Điều này mang lại cho họ khả năng chỉ cần gói các gói tin đến bất cứ nơi nào và tùy chọn làm cho chúng đáng tin cậy, là tốt.
Hệ thống gói tin đáng tin cậy thường là hệ thống thử lại đơn giản cho đến khi được thừa nhận đơn giản hơn TCP nhưng có các giao thức đi xa hơn những gì TCP có thể cung cấp.
Tình huống của bạn nghe rất đơn giản. Có thể bạn sẽ có thể tự tạo ra giải pháp sạch nhất - chỉ cần làm cho mọi khách hàng gửi lại phản hồi "Tôi nghe bạn" và máy chủ tiếp tục cố gắng cho đến khi nó nhận được (hoặc từ bỏ).
Nếu bạn muốn một cái gì đó nữa, hầu hết các thư viện giao thức tùy chỉnh đều có trong C++, vì vậy tôi không chắc chắn họ sẽ sử dụng bao nhiêu. Tuy nhiên, kiến thức của tôi ở đây là một vài năm tuổi - có lẽ một số giao thức đã được chuyển qua bây giờ. Hmm ... RakNet và enet là hai thư viện C/C++ xuất hiện trong tâm trí bạn.
Về * "mà đi xa hơn những gì TCP có thể cung cấp" *, làm thế nào là có thể kể từ khi TCP được thực hiện cụ thể để giải quyết giao hàng đáng tin cậy? Có điều gì đó mà TCP thiếu trong một hệ thống gói tin đáng tin cậy không? – Pacerier
@Pacerier TCP sẽ bán lại dữ liệu mà nó đã nhận được nếu thậm chí còn thiếu một phần từ luồng. Có lẽ trong một số trường hợp, yêu cầu là khác nhau - nhận dữ liệu ngay sau khi nó đến, ngay cả khi nó không đúng thứ tự. –