Некоторое время назад у меня возник вопрос о том, почему мой сокет иногда получал только 653 октета (например), когда я отправлял 1024 октета, и благодаря Rakis я понял: ОС позволяет получать данные произвольно размерами.
На этот раз мне нужно подтверждение:)
На любой ОС (ну, по крайней мере, на GNU / Linux и Windows), на любом языке (здесь я использую Python), если я отправлю случайный пакетчисло байтов, может быть 2 байта, может быть 12000 байтов, скажем, X, когда я пишу socket.send (X), я абсолютно уверен, что X будет получен ПОЛНОСТЬЮ (независимо от каких-либо кусков, на которые принимающая ОС делит его)на другом конце сокета ДО того, как я сделаю еще один socket.send (любая строка)?
Или другими словами, если у меня есть код:
socket.send(X)
socket.send(Y)
Даже если X> MTU, поэтому он будет обязан отправлять несколько пакетов, будет ли он ждать, пока каждый пакет будет отправлен и подтвержденконечной точкой сокета перед отправкой Y?Хорошо написав, что заставляет меня поверить, что ответ - да, это гарантировано, и именно в этом заключается цель установки сокета в режиме блокировки, но я хочу быть уверенным: D
Заранее спасибо, Nolhian