Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676

UDP слушатель

05.02.2021, 18:45. Показов 3031. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго вечера.

Помогите с написанием udp слушателя что то мой что я пишу не слушает нифига

У устройства есть сервер назовем его терминал

Другое устройство назовем контроллер

Так вот у терминала адрес в док сети udp 192.168.1.152:5757

У контроллера 192.168.1.2

Контроллер должен постоянно слушать и ловить пакеты 192.168.1.152:5757->192.168.1.2:5757

Что то не выходит у меня вроде сокет запускается вроде все работает исключений нет ну и данных то же нет


При всем при этом необходимо что бы я только ловил пакеты

Так как отсылаю их я в отдельном потоке!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.02.2021, 18:45
Ответы с готовыми решениями:

Слушатель события check/uncheck CheckBox в DataGrid
Привет, форумчанам! Нужна ваша помощь. Пишу программу, придерживаясь MVVM. Есть DataGrid, привязанный к коллекции компонентов: ...

"Слушатель" Listener в отдельном потоке
Доброго времени суток! Есть задачка мониторить программку а то бывает закроют ее или же повиснет, но не суть Воспользовался классом...

500/UDP; 4500/UDP - Доступен агрессивный режим (как отключить)?
Добрый день, прошу вашей помощи! На оборудовании Cisco Catalyst, возникла такая ошибка: на портах "500/UDP - Internet Key Exchange и...

34
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.02.2021, 10:19  [ТС]
Студворк — интернет-сервис помощи студентам
И там стоит я ж писал ни ошибок ни данных

В исключение не уходит (

В консольном приложении та же беда


И как я не извращаться ничего не выходит (

Добавлено через 16 минут
Ну как нет мыслей?

Добавлено через 1 минуту
Я заметил что если я выполню connect и только после этого запущу слушателя то он получает сообщения

Но Веть мне же нужно всегда слушать
0
jump
 Аватар для I can
5009 / 4815 / 852
Регистрация: 13.04.2015
Сообщений: 10,075
07.02.2021, 10:20
Цитата Сообщение от Sanya2019 Посмотреть сообщение
он замирает на этой строчке
Вот это мне непонятно, как это проявляется?
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.02.2021, 10:25  [ТС]
Запускаю слушателя точка останова стоит на этой строчке

Перехожу на точку останова

Далее прохожу до конца цикла и все далее посылаю команду оплаты терминал запрашивает карту приложил карту и жду что опять попаду на точку останова но нет нету и исключения ничего

Тсп сервер принимает данные а удп молчит
0
jump
 Аватар для I can
5009 / 4815 / 852
Регистрация: 13.04.2015
Сообщений: 10,075
07.02.2021, 10:38
Цитата Сообщение от Sanya2019 Посмотреть сообщение
но нет нету и исключения ничего
То есть, цикл прекращается? Для этого достаточно одной ошибки и заскока в секцию catch.

У меня немного не так организовано. В цикле каждый раз создаётся новый поток выполняется "прослушивание" и поток завершается, создаётся новый поток и т.д.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.02.2021, 10:40  [ТС]
Нет цикл не прекращается я до конца секции не доходу

Добавлено через 20 секунд
Может Скайп? Так проще было бы )
0
07.02.2021, 10:44

Не по теме:

Цитата Сообщение от Sanya2019 Посмотреть сообщение
Может Скайп? Так проще было бы )
Нееее, мне не проще, мне лень.:D

0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.02.2021, 10:46  [ТС]
Поделитесь Вашим примеров слушателя пож
0
jump
 Аватар для I can
5009 / 4815 / 852
Регистрация: 13.04.2015
Сообщений: 10,075
07.02.2021, 10:50
Посмотрел пошагово, у меня тоже на этой строке стоит. Но как только получает пакет, то идет дальше. Так что "слушатель" правильно работает. Просто ничего не отправляется ему.
1
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.02.2021, 11:00  [ТС]
Ну дак и у меня так же

Но почему ничего не полетает?

Я как бы этого и не понимаю (

Снифер видит данные а мой этот слушатель молчит (
0
jump
 Аватар для I can
5009 / 4815 / 852
Регистрация: 13.04.2015
Сообщений: 10,075
07.02.2021, 11:04
Цитата Сообщение от Sanya2019 Посмотреть сообщение
Снифер видит данные
Это его проблема.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.02.2021, 11:11  [ТС]
Терминал же если я верно понимаю шлёт ответ на адрес и порт с которого ему слали данные?

Или все же на какой то другой порт?
0
jump
 Аватар для I can
5009 / 4815 / 852
Регистрация: 13.04.2015
Сообщений: 10,075
07.02.2021, 11:13
Цитата Сообщение от Sanya2019 Посмотреть сообщение
порт с которого ему слали данные
Похоже Вы всё-таки не до конца понимаете, как работает обмен данными по протоколу UDP/
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.02.2021, 13:56  [ТС]
Но данные которые я вижу в сеифере

Протокол удп айпи терминала и его порт на мой Лок адрес и порт такой же как у терминала

Добавлено через 44 секунды
Ну да не понимаю потому и пишу здесь )

Добавлено через 1 час 43 минуты
как узнать какой порт мне необходимо указать в слушаете?

Добавлено через 19 секунд
я уж езадолбался я уже все примеры в интернете перебрал (

Добавлено через 9 минут
ВОт если я делаю так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
private void PayProduct_Click(object sender, EventArgs e)
        {
           // UDPSendReceive SendPaymentGoodsServices = new UDPSendReceive();
 
            UdpClient client = new UdpClient();
 
            client.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.152"), 5757));
 
            Guid g = Guid.NewGuid();
 
            string gg = g.ToString().Replace("-", "");
 
            string UnString = gg.Remove(16);
 
            //string UniqString = DateTime.Now.ToString("yyyyMMddhhmmss");
 
            byte[] pr = StringToByteArray("00000041");
            byte[] un = StringToByteArray(UnString.ToUpper());
            byte[] typ = StringToByteArray("00");
            byte[] sum = IntToThreeBytesSum(1521); //  Сумма  
            byte[] vat = IntToThreeBytesCur(933);//  код валюты
 
            byte[] newArray = new byte[pr.Length + un.Length + typ.Length + sum.Length + vat.Length];
            Array.Copy(pr, 0, newArray, 0, pr.Length);
            Array.Copy(un, 0, newArray, 4, un.Length);
            Array.Copy(typ, 0, newArray, 12, typ.Length);
            Array.Copy(sum, 0, newArray, 13, sum.Length);
            Array.Copy(vat, 0, newArray, 17, vat.Length);
 
            client.Send(newArray, newArray.Length);
            IPEndPoint ep = null;
 
            try
            {
                while (true)
                {
                    byte[] data = client.Receive(ref ep); // получаем данные
                    string message = Encoding.Unicode.GetString(data);
                    Analyze.MsgLogUDP_S = "message to cient " + message;
                    Analyze.Show();
                }
            }
            catch (Exception ex)
            {
                Analyze.MsgLogError_S = "error ReceiveMessages " + ex.Message;
                Analyze.Show();
                client.Close();
            }
 
            // SendPaymentGoodsServices.Send(newArray);
 
            //SendPaymentGoodsServices.ReceiveMessages();
        }
то мне прилетает только один ответ от терминала

а если пихаю получение в другом потоке то все ничего не получаю (

Добавлено через 9 минут
Получилось наконец но это в основном пакете

а мне необходимо что бы он всегда получал данные но отправление производил отдельно

C#
1
UdpClient client;
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
private void PayProduct_Click(object sender, EventArgs e)
        {
 
            client = new UdpClient();
 
            client.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.152"), 5757));
 
            Guid g = Guid.NewGuid();
 
            string gg = g.ToString().Replace("-", "");
 
            string UnString = gg.Remove(16);
 
            byte[] pr = StringToByteArray("00000041");
            byte[] un = StringToByteArray(UnString.ToUpper());
            byte[] typ = StringToByteArray("00");
            byte[] sum = IntToThreeBytesSum(1521); //  Сумма  
            byte[] vat = IntToThreeBytesCur(933);//  код валюты
 
            byte[] newArray = new byte[pr.Length + un.Length + typ.Length + sum.Length + vat.Length];
            Array.Copy(pr, 0, newArray, 0, pr.Length);
            Array.Copy(un, 0, newArray, 4, un.Length);
            Array.Copy(typ, 0, newArray, 12, typ.Length);
            Array.Copy(sum, 0, newArray, 13, sum.Length);
            Array.Copy(vat, 0, newArray, 17, vat.Length);
 
            client.Send(newArray, newArray.Length);
 
            Thread receiveThread = new Thread(new ThreadStart(ReceiveMessages));
            receiveThread.Start();
        }
 
        // метод приема сообщений
        private void ReceiveMessages()
        {
            //UdpClient client = new UdpClient();
            //client.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.152"), 5757));
            IPEndPoint ep = null;
            try
            {
                while (true)
                {
                    byte[] data = client.Receive(ref ep); // получаем данные
                    string message = Encoding.Unicode.GetString(data);
                    Analyze.MsgLogUDP_S = "message to cient " + message;
                    Analyze.Show();
                }
            }
            catch (Exception ex)
            {
                Analyze.MsgLogError_S = "error ReceiveMessages " + ex.Message;
                Analyze.Show();
                client.Close();
            }
        }
Добавлено через 29 минут
Сейчас другая проблема (

сперва терминал у меня запрашивает карточку

одновременно шлет мне ответ с кодом 01 (в процессе)

далее я прикладываю карту он шлет еще 3 пакета с кодом 01

далее начинается печать и мне бесконечно летят пакеты с кодом 01

я всунул счетчик интераций что бы понять в чем прикол так вот прикол в том что он как оказалось не считает вообще и шлет мне откудато данные

ка кэто возможно?

Добавлено через 10 минут
Ребята помогите пожалуйста я с ума сойду от этой задачи (
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
07.02.2021, 15:19
Sanya2019, изучайте документацию терминала, с этим тут врядли кто поможет.
0
4 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 676
07.02.2021, 20:19  [ТС]
В документации указано что я шлю ему пакеты он мне отвечает

Добавлено через 1 час 41 минуту
Производитель ответил

Терминал не возвращает ответ постоянно

Он шлёт ответ сразу после обращения к нему

В документации это забыли написать

Переделал

На полные и короткие запросы к кассе в бесконечном цикле пока не получу либо ошибку или ответ что все готово

В итоге все работает как надо

Спасибо всем кто помогал мне
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.02.2021, 20:19

Передача с микрофона в udp и прием из udp на динамик
Собственно каким образом осуществить передачу данных с микрофона в сеть и прием из сети данных вывести на звуковое устройство. проект...

Слушатель на images
Добрый вечер,пишу карточную игру "Ведьма" клиент-сервер и столкнулся с проблемой слушателей. Допустим у меня есть BufferedImage's с...

Слушатель на скайп
добрый вечер ! нужна ваша помощь написал программу, которая привязана к скайпу. когда в своей программе что-то меняю то в скайпе тоже...

Слушатель событий
Подскажите пожалуйста, как услышать кнопку (прочитать текстовое поле), которая на фрейме, который, в свою очередь, появляется после нажатия...

Слушатель и JLabel
Почему не работает обработчик событий на кнопке - не видит объект write. и как выводит ответ на JLabel ? import javax.swing.*; import...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru