C++ ma następującą funkcję do odbierania bajtów z gniazda, może sprawdzić liczbę bajtów dostępnych z flagą MSG_PEEK
. Z MSG_PEEK
, zwracana wartość „recv” jest liczba bajtów dostępnych w gnieździe:Uzyskaj liczbę bajtów dostępnych w gnieździe przez "recv" z "MSG_PEEK" w C++
#include <sys/socket.h>
ssize_t recv(int socket, void *buffer, size_t length, int flags);
Potrzebuję uzyskać liczbę bajtów dostępnych w gnieździe bez tworzenia buffer
(bez przydzielania pamięci dla buffer
). Czy to możliwe i jak?
przychodzące dane do gniazda mają być "ciągłym strumieniem bajtów" lub "serią pakietów tcp"? – jondinham
Zerkanie z maksymalną liczbą bajtów (obsługiwane przez program) sprawi, że podwójne zadanie myślę, bo kiedy faktycznie zajmujemy się danymi, czytamy po raz drugi – jondinham
Prawidłowo, dlatego pierwsza metoda jest lepsza, chociaż chyba działasz z szybkością Gb/s, wtedy nigdy tego nie zauważysz. – hexist