Вопрос по TcpClient
. Например, один TcpClient
отправляет какое то сообщение другому. Тот в это время ждет данные при помощи theClient.GetStream().Read(...)
. То есть когда данные приходят, он их считывает. Ну размер сообщения может отличаться от размера буфера, поэтому можно положить это в цикл и накопить байтики для последующей десериализации.
Теперь вопрос. Клиент и сервер осуществляют диалог (запорс/ответ) асинхронно. Может ли получиться так, что theClient на одной стороне при помощи цикла и theClient.GetStream().Read(...)
примет в один массив байт байты от разных сообщений?
UPD: Прочитал свой вопрос и понял, что могут возникнуть непонятки. :)
Поясню на примере.
С одной стороны асинхронно уходит 2 сообщения:
На принимающей стороне срабатывает theClient.GetStream().Read(...)
(и повторяется пока приходят данные). Не засунет ли такая конструкция две этих строки в одно сообщение?
UPD2:
Если я правильно понимаю, TCP пакет выглядит как то так
| HEADERS | BODY | END |
Так вот я в этой абстракции могу управлять только блоком BODY. Но этот блок может быть больше, чем размер пакета. То есть если я отправлю асинхронно 2 сообщения:
| HEADERS | ПЕРВОЕ СООБЩЕНИЕ | END |
| HEADERS | ВТОРОЕ СООБЩЕНИЕ | END |
То на принимающей стороне это может выглядеть так
| HEADERS | ПЕРВОЕ | END |
| HEADERS | ВТОРОЕ | END |
| HEADERS | СООБЩЕНИЕ | END |
| HEADERS | СООБЩЕНИЕ | END |
И как это разруливать?
UPD3:
То, что данные придут в том порядке в котором они были отправлены, это я понимаю, но откуда мне знать, что в двух асинхронных потоках они отправятся именно так, как нужно? А нужно, чтобы было так:
Не важно в каком порядке отправятся сообщения, важно, что если они будут делиться на части, эти части не будут вокруг частей другого сообщения.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Пытаюсь поменять цвет текст в строке, но при загрузке формы строка моргнет нужным цветом и опять станет цвет по умолчанию
Есть необходимость присоединять один массив байт к другому (много раз подряд)
Например, имеется произвольный текст, где могут встречаться последовательности, которые закодированы в base64
Как конвертировать клавиатурных хук который сможет понимать все клавиши и выводить нужный символ?!