TCP
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: TCP
Помогите теорией и практикой.
По сети передаётся строка, заранее не известной длины, я с помощью пытаюсь её принять.
Частично всё работает, через два TCP-readera`a, как в начале темы делали, проблема в том что я не понимаю сколько в первый TCP-reader подавать для bytes to read? Пробовал и 4 и 8 и 1024, всегда разные результаты, то половину строки покажет, то только отрывок из 2х символов.
По сети передаётся строка, заранее не известной длины, я с помощью пытаюсь её принять.
Частично всё работает, через два TCP-readera`a, как в начале темы делали, проблема в том что я не понимаю сколько в первый TCP-reader подавать для bytes to read? Пробовал и 4 и 8 и 1024, всегда разные результаты, то половину строки покажет, то только отрывок из 2х символов.
-
- assistant
- Сообщения: 119
- Зарегистрирован: 10 янв 2011, 11:01
- Версия LabVIEW: 8.6, 2009, 2010
- Откуда: Таганрог
- Контактная информация:
Re: TCP
Обычно в начале сообщения имеется поле (4 байта), показывающее длину этого сообщения. Тогда считываем так:
Если же длины сообщений разные и нигде не сказано какие они (длины), то можно считывать только те байты, которые дошли и находятся в буфере:
Re: TCP
Shpik, спасибо, вроде работает. Т.е. насколько я понимаю 2000 это и есть размер буфера? Т.е. какая бы ни была строка всё должно читаться?
-
- assistant
- Сообщения: 119
- Зарегистрирован: 10 янв 2011, 11:01
- Версия LabVIEW: 8.6, 2009, 2010
- Откуда: Таганрог
- Контактная информация:
Re: TCP
Нет, это не размер буфера. Ну, например, если у тебя в буфере 2011 байт, то данная функция считает только 2000, а остальное в следующий раз. Это число байт для считывания, т.е. максимальное за раз.
- MSergey
- beginner
- Сообщения: 26
- Зарегистрирован: 05 май 2011, 09:34
- Версия LabVIEW: 8.5
- Откуда: РФ, г. Таганрог
- Контактная информация:
Определить ip адрес
Люди подскажите как в определить ip адрес компьютера с которого отсылается сообщение (данные)?
- Mad_Ahab
- junior
- Сообщения: 66
- Зарегистрирован: 12 янв 2015, 16:33
- Версия LabVIEW: 2013
- Контактная информация:
Re: TCP
Здравствуйте.
Вопрос с передачей данных по TCP: нужно передать строго четыре ноля, "0000" устройству по IP-адресу. Как вообще организовать передачу произвольных последовательностей чисел по TCP?
Я думал, что для этого послужит Number To Hexadecimal String Function, если подать на нее 0 и выставить длину 2. Однако, в Wireshark'e вместо "00 00" парой байтов видно "30 30". Вот блок-диаграмма:
Вопрос с передачей данных по TCP: нужно передать строго четыре ноля, "0000" устройству по IP-адресу. Как вообще организовать передачу произвольных последовательностей чисел по TCP?
Я думал, что для этого послужит Number To Hexadecimal String Function, если подать на нее 0 и выставить длину 2. Однако, в Wireshark'e вместо "00 00" парой байтов видно "30 30". Вот блок-диаграмма:
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: TCP
0 это что? Символ "0", константа типа байт со значением 0? или что другое?
В первом случае подаете строку "0000", без каких-то конверсий на вход функции TCP Write
Во втором случае формируете байтовый массив из четырех элементов, конвертируете его функцией "Byte Array To String" и подаете на вход функции TCP Write
Upd Ваши 00 00 - это два байта. Следовательно второй вариант, только элементов массива 2
В первом случае подаете строку "0000", без каких-то конверсий на вход функции TCP Write
Во втором случае формируете байтовый массив из четырех элементов, конвертируете его функцией "Byte Array To String" и подаете на вход функции TCP Write
Upd Ваши 00 00 - это два байта. Следовательно второй вариант, только элементов массива 2
Последний раз редактировалось Borjomy_1 13 янв 2015, 17:19, всего редактировалось 1 раз.
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: TCP
http://www.labviewportal.org/viewtopic.php?f=294&t=7704Mad_Ahab писал(а):Как вообще организовать передачу произвольных последовательностей чисел по TCP?
Вторым сообщением пример. В проекте и клиент и сервер. Можете этот пример немного модифицировать и отправлять данные по событию(используя event structure, например).
Если не получится, то пишите - будем разбираться.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
- Mad_Ahab
- junior
- Сообщения: 66
- Зарегистрирован: 12 янв 2015, 16:33
- Версия LabVIEW: 2013
- Контактная информация:
Re: TCP
Большое спасибо, получилось!
Сделал (простите за деревянность решения - это мой первый проект в LV, я осваиваю по ходу) как сказали - массив байтов преобразовал в строку, отправил по TCP, пришел соотвествующий (все правильно, я проверил) акноледж. Спустя некоторое время выскочила ошибка №56 на элементе Read. В чем ее суть в данном случае?
Есть какая-то глобальная логика в реализации TCP-соединений в LV, я, видимо, не совсем понимаю. Чего не хватает? Что нужно иметь в виду?
Сделал (простите за деревянность решения - это мой первый проект в LV, я осваиваю по ходу) как сказали - массив байтов преобразовал в строку, отправил по TCP, пришел соотвествующий (все правильно, я проверил) акноледж. Спустя некоторое время выскочила ошибка №56 на элементе Read. В чем ее суть в данном случае?
Есть какая-то глобальная логика в реализации TCP-соединений в LV, я, видимо, не совсем понимаю. Чего не хватает? Что нужно иметь в виду?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 38 Ответы
- 13297 Просмотры
-
Последнее сообщение AndreyDmitriev
-
- 5 Ответы
- 250 Просмотры
-
Последнее сообщение IvanLis