С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
Строитель
889 / 556 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
1
.NET 2.x

Готовое решение "User Datagram Protocol Client" (UDP Client или Мини чат)

09.04.2014, 05:10. Показов 4001. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Может быть кому пригодится
Миниатюры
Готовое решение "User Datagram Protocol Client" (UDP Client или Мини чат)  
Вложения
Тип файла: zip BubbleChat.zip (143.1 Кб, 151 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.04.2014, 05:10
Ответы с готовыми решениями:

Client does not support authentication protocol requested by server; consider upgrading MySQL client
Всем доброго времени суток, уважаемые форумчане, настраиваю компонент FDConnection указал сервер...

#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
При нажатии в localhost denwer на "Проверка MySQL и phpMyAdmin"выскакивает такая страница ...

Client-server app Android - pc. Готовое решение, осталось долатать
Здравствуйте. Искал, думаю, как и все, "на просторах интернета", как сделать простое клиент -...

Client-server app Android - pc. Готовое решение, осталось долатать
Здравствуйте. Искал, думаю, как и все, "на просторах интернета", как сделать простое клиент -...

15
3 / 3 / 1
Регистрация: 13.03.2014
Сообщений: 59
09.04.2014, 06:46 2
ты не по адресу)он на ВБ)а это другой раздел)
0
Строитель
889 / 556 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
09.04.2014, 07:44  [ТС] 3
я бы не сказал что она на VB, она VB.NET, просто я туда в архив закинул сами скрипты а не проект
0
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
09.04.2014, 11:11 4
Готовые решения и полезные коды на Visual Basic .NET (Часть-1)
0
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 12
15.03.2016, 10:52 5
Честно пытался понять как определяется ip адрес, от кого пришло сообщение. Не понял. Подскажите, пожалуйста.
0
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
15.03.2016, 11:46 6
Процедура Inc_out_cmp получает имя клиентов и их ip при обмене сервисными сообщениями. IP в этой процедуре помещается в переменную hip и затем в список находящихся в сети клиентов. А когда кто-то выходит из сети (отключает клиента), его клиент отправляет сообщение о выходе и остальные по получении этого сообщения удаляют его из списка.
А вот обычные пользовательские сообщения уже содержат имя компа, который прислал сообщение (см. btnSend_Click а именно содержимое переменной MTS)
VB.NET
1
Dim MTS As String = RTF_to_send("[" & Date.Now.ToShortTimeString & "] " & My.Computer.Name.ToLower & ">>" & EndHostName.ToLower & " : ", Me.txtMSGtosend.Rtf)
My.Computer.Name.ToLower - мы сами в сообщении указываем, от кого это сообщение. И далее эта строка никак не обрабатывается на получившей стороне, только проверяется начало строки на содержание в нем признака того, что это не пользовательское, а сервисное сообщ.
VB.NET
1
2
3
4
5
6
7
8
9
10
Private Sub UDP_DataArrival(ByVal DataSTR As String)
        If DataSTR.StartsWith("INC_CMP") = True Then 'извещение о подключении члена чата
            Me.Inc_out_cmp(DataSTR, True)
            Exit Sub
        End If
        If DataSTR.StartsWith("OUT_CMP") = True Then 'извещение об отключении члена чата
            Me.Inc_out_cmp(DataSTR, False)
            Exit Sub
        End If
...
2
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 12
15.03.2016, 12:36 7
У меня немного другая задача, но смысл такой же.
UDP слушает на определенном порту на всех интерфейсах
Visual Basic
1
2
3
4
5
6
7
8
9
10
 Dim endPoint As System.Net.IPEndPoint = New System.Net.IPEndPoint(System.Net.IPAddress.Any, CType(TextBox3.Text.Trim, Integer))
        Dim messageDelegate As AddMessage = AddressOf MessageReceived
 
        While (True)
            Dim data() As Byte
            data = receivingClient.Receive(endPoint)
 
            Dim Values() As String = Split(Mid(System.Text.Encoding.Default.GetString(data), 5).Trim, "|")
            Dim IPUser As String = Values(0)
            MsgBox("IP Address..." & IPUser, MsgBoxStyle.OkOnly, "IP Address")
Пакеты приходить могут с разных адресов, для того, чтобы их как-то различать мне и нужно знать ip.
я понимаю, что ip адрес из полученного пакета получить легко, но как это реализовать не представляю.
Вариант как я это пытаюсь сделать выдает одинокую единицу.
0
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
15.03.2016, 13:33 8
Ну адрес отправителя нужно в само сообщение закладывать. Потом на получателе его просто нужно выковырять. Но это задача не по udp, а по работе со строками.
Вот как формируется сообщение на стороне отправителя? В приведенном коде мы что-то получаем и пытаемся нарезать по символу "|" . Так?
А весь вопрос в том, что мы отправили, но этого не видно

Добавлено через 1 минуту
Он вроде как должен быть в самом начале отправляемой строки, затем "|" и далее...
Попробуй на стороне отправителя сначала получить IP в месиджбокс. Ты, скорее всего получаешь адрес заглушки, а не адрес в сети. Глянь в моем примере чата, там это учтено
1
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 12
15.03.2016, 14:57 9
т.е. нет нормального способа достать из udp фрейма source-ip-адрес? Ведь он обязательно есть в каждом пакете.

Добавлено через 1 час 12 минут
на perl это просто решается:
Perl
1
2
3
4
5
6
7
8
9
10
11
$socket = new IO::Socket::INET ( 
    MultiHomed => '1',
    LocalAddr => $ARGV[0],
    LocalPort => defined ($ARGV[1])?$ARGV[1]:'5000',
    Proto => 'udp'
) or die "ERROR in Socket Creation : $! \n";
print "Waiting for data...";
while(1)
{
$socket->recv($recieved_data,1024);
$peer_address = $socket->peerhost();
0
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
15.03.2016, 16:21 10
о! Попробуй в процедуре DoListen() после заполнения массива данными из датаграммы запросить от RemoteIpEndPoint запросить IP:
VB.NET
1
RemoteIpEndPoint.Address.ToString()
VCLY утверждает, что должно получиться - см. пример в этой статье.
Хотя мы вроде его назанчали как Any
1
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 12
15.03.2016, 16:39 11
Вы не представляете, как я вам благодарен! Я трое суток пытался определить этот ip! И вот(по вашей подсказке):
The Receive method will block until a datagram arrives from a remote host.When data is available, the Receive method will read the first enqueued datagram and return the data portion as a byte array.This method populates the remoteEP parameter with the IPAddress and port number of the sender.
В итоге:
VB.NET
1
2
3
4
5
6
7
8
9
 Dim endPoint As System.Net.IPEndPoint = New System.Net.IPEndPoint(System.Net.IPAddress.Any, CType(TextBox3.Text.Trim, Integer))
        Dim messageDelegate As AddMessage = AddressOf MessageReceived
 
        While (True)
            Dim data() As Byte
            data = receivingClient.Receive(endPoint)
 
            Dim IPUser As String = endPoint.Address.ToString() 
            MsgBox("IP Address..." & IPUser, MsgBoxStyle.OkOnly, "IP Address")
Все работает!
0
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
15.03.2016, 17:02 12
да я и сам не догадывался, что его там можно дернуть просто щас в процессе нашел в мсдн
0
Модератор
Эксперт .NET
4319 / 3393 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
15.03.2016, 19:32 13
Andrey Safonov, окончательный исходник выложите?
0
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 12
16.03.2016, 08:35 14
Я б не против, но до окончательности еще очень далеко. Это вообще не чат, а софт, который слушает дейтаграммы от EDU генераторов. Может не стоит в эту тему выкладывать?
0
Модератор
Эксперт .NET
4319 / 3393 / 507
Регистрация: 27.01.2014
Сообщений: 6,188
16.03.2016, 10:29 15
да вы правы. это другая тема совсем. )
0
4 / 4 / 1
Регистрация: 25.02.2013
Сообщений: 49
10.04.2018, 21:07 16
К сожалению, если на удаленном несколько IP адресов, может быть такое, что запрос отправляем на один IP адрес, а ответ приходит с другим IP.
0
10.04.2018, 21:07
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2018, 21:07
Помогаю со студенческими работами здесь

Создать абстрактный класс Client с реализаций IComparable<Client> и производные Client и Organization
Здравствуйте, помогите решить задачу на С#. 1. Создать абстрактный класс Client с функциями,...

ошибка client does not support authentication protocol requested by server
При попытке соединиться с сервером выдается ошибка client does not support authentication protocol...

UDP Client
Привет всем! У меня тут такой вопрос возник: можно ли создать UDP Client к уже существующему...

Broadcast UDP client
Клиент привязан к порту 12345, сервер к 12344. Клиент посылает широковещательный пакет на...

UDP Client - гляньте )
Ребята есть готовая и рабочая программа которая работала на серверах и долгое время мы ее...

UDP Server -> Client
Всем привет! Изучаю дельфи уже долгое время, вот и до сокетов добрался. Как с TCP протоколом...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как программировать под HCL Notes и создавать свои продукты на ее основе
InfoMaster 11.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой мощную платформу для разработки корпоративных приложений, которая сочетает в себе функции электронной почты, календаря,. . .
Как работать с SVN (Subversion)
InfoMaster 11.01.2025
Введение Система контроля версий является неотъемлемой частью современного процесса разработки программного обеспечения. Она обеспечивает управление изменениями в коде, позволяет отслеживать. . .
Использование GraphQL в JavaScript
InfoMaster 11.01.2025
Введение в GraphQL и его преимущества В современной разработке веб-приложений эффективный обмен данными между клиентом и сервером играет ключевую роль. GraphQL представляет собой язык запросов и. . .
Администрирован­­­­ие Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru