Pytanie teoretyczne o sockety

0

Czy jeżeli serwer wysyła informacje w pakietach pojedynczo ale zaraz po sobie to czy klient zawsze je odbierze w dwóch wywołaniach metody Read?

albo czy może się zdarzyć taka sytuacja że serwer wysyła pakiet w całości a przez jakieś lagi klient otrzyma go w dwóch częściach i dwa razy wywoła metodę Read?

pytam, bo ciężko sprawdzić takie coś na jednej maszynie gdzie wszystko zawsze jest perfekcyjnie i bez opóźnienia czasowego a na google nie wiem czego szukać

aha, chodzi oczywiście o TCP

0

przed chwilą wyczytałem że nawet jeżeli pakiet zostanie podzielony to musi zostać sklejony z powrotem w ramach warstwy IP, ale zaraz po tym wyczytałem że jedno wysłanie sendem nie oznacza jednego recv
więc domyślam się że chodzi o podzielenie pakietu TCP gdzie część miałaby zawierać tylko np nagłówek a druga tylko dane, a dla mnie oznacza to tyle co nic

czy Socket.Read w C# to to samo recv czy może jest to takie bardziej obudowane, które likwiduje te niedogodności? ;)
wątpię raczej w to - w związku z tym będę musiał chyba niestety pakiety buforować przed przetworzeniem

jeszcze pytanko mam - czy znacie jakiś sposób na symulację złych warunków w sieci? spowodowanie sztucznych opóźnień, gubienie pakietów itp, jak w normalnej komunikacji odległych o parę routerów od siebie komputerów na jednej maszynie?

0

sprawa wyglada tak : klient moze wyslac pakiety w paczkach nawet bo 1 bajcie , docieraja one na bufor drugiego hosta (serwer) i tam sa "magazynowane" w tym momencie metoda read zczytuje z bufora wg swojej wielkosi pakietu. ,

1 użytkowników online, w tym zalogowanych: 0, gości: 1