Giả định...
- bạn đang nói về việc chuyển đổi sang bộ đệm byte
- Bạn đang sử dụng UDP và hiệu suất là một mối quan tâm
Cố gắng tránh lãng phí không gian trong gói của bạn để xác định cấu trúc. Tối thiểu IE gửi một byte để biểu thị loại gói, sau đó chỉ giả sử mỗi gói nhận được theo cấu trúc được xác định trước cho loại gói đó
Tôi có nên đọc cấu trúc vào ổ cắm không? Sử dụng bộ đệm proticol / tiết kiệm?
- Có, đọc toàn bộ cấu trúc NẾU bạn CẦN toàn bộ cấu trúc
- Không, tự tạo cấu trúc gói, Điều này chắc chắn sẽ nhỏ hơn việc tuần tự hóa bằng các phương thức này; bạn nên biết chính xác dữ liệu mà gói nên bao gồm
Làm thế nào tôi nên đại diện cho mảng dữ liệu?
- Là mảng dữ liệu. Khi nhận tiếp tục đọc bộ đệm cho đến khi hết dữ liệu để tránh gửi Đếm các phần tử của mảng
Giao diện nên trông như thế nào để đóng gói / giải nén dữ liệu?
- Bạn có thể dễ dàng thiết lập một loạt các phương thức để chuyển đổi các loại cơ bản thành byte, từ đó xây dựng các phương thức này để chuyển đổi các loại tùy chỉnh. Các chi tiết cụ thể về cách thực hiện việc này có thể được tìm thấy ở hầu hết mọi nơi tôi chắc chắn (tôi sử dụng C # cá nhân)
Một điều cuối cùng, kích thước gói là một mối quan tâm, đặc biệt đối với ảnh chụp nhanh: size = packSize x entity x ConnPlayers; Vì vậy, bạn có thể có 60 x 10 x 16 = 9.600 byte mỗi gói Sau đó gửi 20 lần một giây: = 192.000 bps = 187 KBps. Đây rõ ràng là một tốc độ tải lên cao. Do đó, cần phải giảm thiểu từng yếu tố góp phần vào kích thước gói nếu có thể.
Bài viết này đã giúp tôi rất nhiều:
Mạng nhiều người chơi Valve