Строитель
 Аватар для Nord790
889 / 556 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
.NET 2.x

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

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

Студворк — интернет-сервис помощи студентам
Может быть кому пригодится
Миниатюры
Готовое решение "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 указал сервер bd, user , пароль, порт. нажимаю...

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

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

15
3 / 3 / 1
Регистрация: 13.03.2014
Сообщений: 59
09.04.2014, 06:46
ты не по адресу)он на ВБ)а это другой раздел)
0
Строитель
 Аватар для Nord790
889 / 556 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
09.04.2014, 07:44  [ТС]
я бы не сказал что она на VB, она VB.NET, просто я туда в архив закинул сами скрипты а не проект
0
 Аватар для Юпатов Дмитрий
1720 / 1207 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
09.04.2014, 11:11
Готовые решения и полезные коды на Visual Basic .NET (Часть-1)
0
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 12
15.03.2016, 10:52
Честно пытался понять как определяется ip адрес, от кого пришло сообщение. Не понял. Подскажите, пожалуйста.
0
 Аватар для Юпатов Дмитрий
1720 / 1207 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
15.03.2016, 11:46
Процедура 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
У меня немного другая задача, но смысл такой же.
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
 Аватар для Юпатов Дмитрий
1720 / 1207 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
15.03.2016, 13:33
Ну адрес отправителя нужно в само сообщение закладывать. Потом на получателе его просто нужно выковырять. Но это задача не по udp, а по работе со строками.
Вот как формируется сообщение на стороне отправителя? В приведенном коде мы что-то получаем и пытаемся нарезать по символу "|" . Так?
А весь вопрос в том, что мы отправили, но этого не видно

Добавлено через 1 минуту
Он вроде как должен быть в самом начале отправляемой строки, затем "|" и далее...
Попробуй на стороне отправителя сначала получить IP в месиджбокс. Ты, скорее всего получаешь адрес заглушки, а не адрес в сети. Глянь в моем примере чата, там это учтено
1
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 12
15.03.2016, 14:57
т.е. нет нормального способа достать из 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
 Аватар для Юпатов Дмитрий
1720 / 1207 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
15.03.2016, 16:21
о! Попробуй в процедуре DoListen() после заполнения массива данными из датаграммы запросить от RemoteIpEndPoint запросить IP:
VB.NET
1
RemoteIpEndPoint.Address.ToString()
VCLY утверждает, что должно получиться - см. пример в этой статье.
Хотя мы вроде его назанчали как Any
1
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 12
15.03.2016, 16:39
Вы не представляете, как я вам благодарен! Я трое суток пытался определить этот 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
 Аватар для Юпатов Дмитрий
1720 / 1207 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
15.03.2016, 17:02
да я и сам не догадывался, что его там можно дернуть просто щас в процессе нашел в мсдн
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,253
15.03.2016, 19:32
Andrey Safonov, окончательный исходник выложите?
0
0 / 0 / 0
Регистрация: 15.03.2016
Сообщений: 12
16.03.2016, 08:35
Я б не против, но до окончательности еще очень далеко. Это вообще не чат, а софт, который слушает дейтаграммы от EDU генераторов. Может не стоит в эту тему выкладывать?
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,253
16.03.2016, 10:29
да вы правы. это другая тема совсем. )
0
4 / 4 / 1
Регистрация: 25.02.2013
Сообщений: 49
10.04.2018, 21:07
К сожалению, если на удаленном несколько IP адресов, может быть такое, что запрос отправляем на один IP адрес, а ответ приходит с другим IP.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2018, 21:07
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
PowerShell и онлайн сервисы. Валюта (floatrates.com руб.)
iNNOKENTIY21 11.11.2025
PowerShell функция floatrates-rub Примеры вызова: # Указанная валюта 'EUR' floatrates-rub -Code 'EUR' # Список имеющихся кодов валют floatrates-rub -Available function floatrates-rub {
PowerShell и онлайн сервисы. Погода (RP5.ru)
iNNOKENTIY21 11.11.2025
PowerShell функция Get-WeatherRP5rss для получения погоды с сервиса RP5 Примеры вызова Get-WeatherRP5rss с указанием id 5484 — Москва (восток, Измайлово) и переносом строки:. . .
PowerShell и онлайн сервисы. Погода (wttr)
iNNOKENTIY21 11.11.2025
PowerShell Функция для получения погоды с сервиса wttr Примеры вызова: Погода в городе Омск с прогнозом на день, можно изменить прогноз на более дней, для этого надо поменять запрос:. . .
PowerShell и онлайн сервисы. Валюта (ЦБР)
iNNOKENTIY21 11.11.2025
# Получение курса валют function cbr (] $Valutes = @('USD', 'EUR', 'CNY')) { $url = 'https:/ / www. cbr-xml-daily. ru/ daily_json. js' $data = Invoke-RestMethod -Uri $url $esc = 27 . . .
И решил я переделать этот ноут в машину для распределенных вычислений
Programma_Boinc 09.11.2025
И решил я переделать этот ноут в машину для распределенных вычислений Всем привет. А вот мой компьютер, переделанный из ноутбука. Был у меня ноут асус 2011 года. Со временем корпус превратился. . .
Мысли в слух
kumehtar 07.11.2025
Заметил среди людей, что по-настоящему верная дружба бывает между теми, с кем нечего делить.
Новая зверюга
volvo 07.11.2025
Подарок на Хеллоуин, и теперь у нас кроме Tuxedo Cat есть еще и щенок далматинца: Хочу еще Симбу взять, очень нравится. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru