Funkcjonalność cofania gniazd posix c ++

Mam pytanie, które może zadać pytanie, ale rozejrzałem się, ale nie widziałem bezpośredniej odpowiedzi na to pytanie i pomyślałem, że mogę tu uzyskać szybką odpowiedź. W prostej pętli wyboru klient / serwer TCP / IP używającej gniazd bsd, jeśli klient wysyła dwie wiadomości, które docierają jednocześnie do serwera, czy jedno wywołanie do odzyskania na serwerze zwróci oba komunikaty połączone w buforze, czy też wymusi każde z nich odrębna wiadomość przychodząca do odczytania oddzielnie?

Pytam, ponieważ pracuję w środowisku, w którym nie mogę powiedzieć, w jaki sposób klient buduje wiadomości do wysłania. Zwykle rejestruje się, że 12 bajtów jest odczytywanych, następnie 915, następnie 12 bajtów, a następnie 915, i tak dalej, w takim naprzemiennym schemacie 12 do 915 ... ale czasami raportuje 927 (czyli 915 + 12). Pomyślałem, że albo klient łączy kilka swoich informacji, zanim wyśle ​​je do serwera, albo że wiadomości dotrą przed wywołaniem recv, a następnie recv wyciąga wszystkie oczekujące bajty jednocześnie. Chciałem się więc upewnić, że prawidłowo zrozumiałem zachowanie recv. Myślę, że brakuje mi tutaj czegoś, co rozumiem, i mam nadzieję, że ktoś może to wskazać, dzięki!

questionAnswers(3)

yourAnswerToTheQuestion