|
Как читать данные блочно с помощью TcpClient?
|
|||
---|---|---|---|
#18+
Мне по TCP передают структуры. Размер их каждый раз разный из-за того, что одним из полей структуры является массив, который для каждой структуры может иметь разную длину. TCP или TcpClient как-то гарантируют, что, если я буду в цикле опрашивать свойство TcpClient.Available, то каждый при каждом таком опросе будет доступно число байт, равное кратному числу структур в потоке (TcpClient.GetStream())? Вроде, в TCP есть пакеты, и приём-передача идёт этими пакетами. Но эти пакеты не обязательно должны иметь размер, равный передаваемой структуре? Или обязательно? Или это сервер и клиент должны договариваться о том, как они передают данные? Я тут идею прочитал, что можно перед каждой структурой передавать фиксированный массив байт, означающий размер последующей структуры. Тогда чтение из потока будет заключаться в том, что я должен сначала прочитать фиксированное число байт, означающее длину следующей порции данных, затем прочитать эту следующую порцию данных, потом снова фиксированное число байт и т. д. Такой подход нормальный? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 12:21 |
|
Как читать данные блочно с помощью TcpClient?
|
|||
---|---|---|---|
#18+
user7320TCP или TcpClient как-то гарантируют, что, если я буду в цикле опрашивать свойство TcpClient.Available, то каждый при каждом таком опросе будет доступно число байт, равное кратному числу структур в потоке Нет, конечно. user7320Или это сервер и клиент должны договариваться о том, как они передают данные? Да, это называется протокол прикладного уровня. user7320Я тут идею прочитал, что можно перед каждой структурой передавать фиксированный массив байт, означающий размер последующей структуры. Тогда чтение из потока будет заключаться в том, что я должен сначала прочитать фиксированное число байт, означающее длину следующей порции данных, затем прочитать эту следующую порцию данных, потом снова фиксированное число байт и т. д. Такой подход нормальный? Да, это самый лучших ИМХО подход для указанного случая (tcp) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 13:56 |
|
|
start [/forum/topic.php?fid=20&fpage=106&tid=1402387]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 337ms |
total: | 444ms |
0 / 0 |