Tôi đang đọc từ một boost::asio::ip::udp::socket
như thế này:động có kích thước tăng :: ASIO :: đệm
using boost::asio::ip::udp;
// ...
char recv_buf[128];
udp::endpoint sender_endpoint;
size_t len = socket.receive_from(boost::asio::buffer(recv_buf), sender_endpoint);
Bây giờ, công trình này hoàn toàn tốt đẹp, nhưng số tiền tối đa của nhân vật mà tôi có thể nhận được tại là 127. Tuy nhiên tôi đang đối mặt với một vấn đề bởi vì tôi cần phải chấp nhận một số dữ liệu đầu vào trong đó chiều dài có thể thay đổi rất nhiều (và không phải là độ dài được xác định rõ ràng với các tiêu đề tiền tố, ví dụ). Một giải pháp cho điều này sẽ là một bộ đệm mở rộng động, giống như một vectơ. Có thể tạo ra một sự mở rộng động boost::asio::buffer
để chấp nhận (lý thuyết) số lượng infite đầu vào và lưu trữ nó trong một container?
+1 Bạn hoàn toàn đúng! Tuy nhiên tôi sẽ quan tâm đến một 'tăng :: asio :: buffer' động, không phải vì 64KiB quá lớn, nhưng một bộ đệm động thường có vẻ thích hợp hơn nhiều, và để tái sử dụng trong TCP. – orlp
@nightcracker với TCP, asio gọi trình xử lý đọc khi bộ đệm đầy, vì vậy bạn có thể dọn sạch nó và quay lại đọc. – Cubbi