Czytam z boost::asio::ip::udp::socket
tak:Dynamicznie wielkości boost :: asio :: bufor
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);
Teraz to działa perfekcyjnie, ale maksymalna ilość znaków, które jestem w stanie odbierać teraz 127. Jednakże mam do czynienia z pewnym problemem, ponieważ muszę zaakceptować pewne dane wejściowe, których długość może się znacznie różnić (na przykład nie ma dobrze określonej długości z prefiksowanymi nagłówkami). Rozwiązaniem tego problemu byłby dynamicznie rozwijający się bufor, taki jak wektor. Czy możliwe jest utworzenie dynamicznie rozwijającego się obiektu boost::asio::buffer
, aby zaakceptować (teoretyczne) dane wejściowe i zapisać je w kontenerze?
+1 Masz całkowitą rację! Nadal byłbym zainteresowany dynamicznym 'boost :: asio :: buffer', nie dlatego, że 64KiB jest tak wielki, ale bufor dynamiczny często wydaje się dużo bardziej odpowiedni i do ponownego użycia w TCP. – orlp
@ noccracker z TCP, asio dzwoni do czytnika, gdy bufor jest pełny, więc możesz go opróżnić i powrócić do czytania. – Cubbi