Size: a a a

2021 December 03

w

who? in DotNetRuChat
Ух ты
источник

МР

Михаил Русановский... in DotNetRuChat
отправляя строку "CompanyInfo AAPL" ты можешь считать её за N раз. Tcp гарантирует только порядок доставки, поэтому чаще всего используют протокол вида <4 байта на длину данных><данные> (упрощённо)

и при чтении проверяют:
- если нет 4 байт, то ждём дальше
- если есть 4 байта, получаем длину данных
- если нет 4 байта + длина данных, то ждём дальше
- если есть 4 байта + длина данных, то пакет получен полностью
источник

МР

Михаил Русановский... in DotNetRuChat
есть ещё несколько вариантов, но этот мне кажется удобнее всего
источник

w

who? in DotNetRuChat
Мдемс, плакал мой курсач))
источник

NM

Nikolai Mikheev in DotNetRuChat
А какие ещё варианты?
Иных вообще нет на сколько знаю.
Ещё бы передавать длину всего за 1-2 байта.
источник

МР

Михаил Русановский... in DotNetRuChat
есть например фиксированная длина пакета, или маркер конца пакета, всё зависит от конкретного случая
источник

С

Слава in DotNetRuChat
Ну во-первых, 4 байта для длины многовато. Во-вторых, поищите статьи о протоколах tlv: type length value
источник

NM

Nikolai Mikheev in DotNetRuChat
Но они точно менее эффективные.🤭
По моему
источник

МР

Михаил Русановский... in DotNetRuChat
зависит от задачи
источник

NM

Nikolai Mikheev in DotNetRuChat
Видимо я мало задач знаю.😔
источник

ш

шо in DotNetRuChat
Приветствую. У меня вопрос. Я осуществил запрос linq для выборки данных из нескольких таблиц один-ко-многим с динамичными условиями. Как мне это проделать в виде расширения linq? Могу предоставить изначальный код.
источник

NM

Nikolai Mikheev in DotNetRuChat
Действительно, если большинство сообщений длиной вообще до 100 байт, можно передавать длину вообще в 1 байте.
Используя 1 бит для определения, чем являются остальные биты, и они являются либо полностью длиной, либо количеством байт длины.🧐 Или её частью
источник

AK

Alex Kiev in DotNetRuChat
Лучше посмотреть стандартные размеры пакетов, прежде чем начинать байтоёбить…
источник

NM

Nikolai Mikheev in DotNetRuChat
Всмысле? Каких пакетов?
источник

AK

Alex Kiev in DotNetRuChat
В смысле что всё что вы отправите будет разбито на пакеты +-стандартного размера
источник

AK

Alex Kiev in DotNetRuChat
И если у вас 10 байт данных вы всеравно отправите ~1400
источник

МР

Михаил Русановский... in DotNetRuChat
иногда удобство превалирует над размером, иногда - прямо наоборот
источник

AK

Alex Kiev in DotNetRuChat
Ну если есть возможность отправить меньшим числом пакетом можно и запарится… но сначала лучше проверить простую опцию )
источник

NM

Nikolai Mikheev in DotNetRuChat
Не понял.
Я использую TCP или UDP
Отправляю 10 байт, с длиной получается 14.

С накладными расходами по факту получается наверное ещё на 1-4 байт больше.

О каких 1400 идёт речь?
источник

AK

Alex Kiev in DotNetRuChat
То что ваш роутер не обменивается с вашим компом по 14 байт….
источник