Люди добрые, осваиваю сокеты на c#, и увидел товарища на ютюбе, который объясняет как это делать. Вообщем, когда он принимает сообщение от клиента(простая строка) он инициализирует массива байтов с числом элементов 1024. и не узнавая размера прилетевшего сообщения, выводит его. Когда я это делал, кроме сообщения получал мусор в количестве соответствующему количеству элементов в массиве байтов. Вопрос, я то-то делаю не так, или он где то недопоказал код? При этом, когда я присваиваю длину при получении сообщения
int lng = socket.Receive(data);
И задаю на вывод, переполнение мусором нету, выводится без лишних символов.
Массив, который вы передаете в метод Receive
- это просто выделенное место для записи в него данных. Реально там данных окажется столько, сколько удалось прочитать. Вам необходимо самостоятельно отслеживать сколько их у вас есть - это общий принцип работы с любыми потоками данных, не только с сокетами.
PS Вы зря называете вашу lng
длиной сообщения. Потому что протокол TCP не передает сообщения, он передает сплошной поток данных! При передаче ваши сообщения могут запросто побиться на несколько или склеиться в одно.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Есть некий xmlВ целом его структура "постоянна", но есть узлы, в которых нет части тегов, которые необходимо считать
если число меньше какого то значения "00000002", то C# превращает его в 2e-07
Нужно реализовать генерацию пути с развилкой (то что нужно мне указано на изображении)