Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
1

Проверка активности порта UDP

20.10.2016, 01:23. Показов 6515. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, дорогие друзья. Существует VDS сервер, на нём запущен игровой сервер с портом UDP 7777. Как можно проверить, используется ли в данный момент порт 7777 или же нет?

Если делать так:
C#
1
2
UdpClient c = new UdpClient();
c.connect(ip,port);
То всегда будет возвращаться TRUE (Как будто игровой сервер запущен, хоть он и выключен на данный момент).

Если делать так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
            {
                try
                {
                    socket.Connect("ip", 7777);
                    socket.Close();
                    return "Работает";
                }
                catch (Exception)
                {
                    return "Выключен";
                }
            }
То всегда будет показывать, что сервер выключен, даже если он включен. Прошу помощи, заранее благодарен!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2016, 01:23
Ответы с готовыми решениями:

UDP клиент-сервер. Проброс порта у клиента
В TCP-IP т.к устанавливается соединение мы используем для связи с сервером тот же сокет с которым...

UDP прослушка IP а не порта
Привет всем. в ходе реализации возникла проблемка, помогите чем можете. Есть сервер который...

Настройка выделенного UDP порта
Доброе время суток, столкнулся с такой проблемой как выделение UDP порта. Создал сервер, чтобы к...

Проверка активности пользователя
пишу программу под windows server. пользователи работающие в данный момент активны, а те которые...

20
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
20.10.2016, 02:05 2
udp подразумевает динамический порт, 4 топора откуда взято?а ваша проверка на открытость порта, 4 топора показывает что порт открыт, и ничего более, есть ли что за ним или нет, никакого рояля не играет в вашей проверке...тут , имхо, нужна проверка на кол-во открытых сокетов на необходимом порту...
0
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
20.10.2016, 04:57 3
vinste, UDP не подразумевает установки соединения. Поэтому, единственным способом проверить наличие службы на этом порту - попробовать послать туда датаграмму с какой-нибудь командой известной серверу и посмотреть, что ответит сервер. Кстати, если сервер работает только на приём или его настройки диктуют ему принимать данные от определённых источников, то не поможет даже это.

Второй твой фрагмент кода бессмысленнем - TCP-сокет работает только с TCP-портами. У тебя на машине может быть одновременно прослушиваться UDP-порт 7777 и TCP-порт 7777 и они друг о друге знать не будут.

Добавлено через 8 минут
Кстати, глупый вопрос: а ты искал документацию на этот игровой сервер? Я больше, чем уверен, что в нём предусмотрена возможность "пингануть" сервер и опросить его, что узнать, что это - именно то, что нужно, а не сервис раздачи биржевых котировок фирм по продаже бананов в Парагвае.
1
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
20.10.2016, 12:39  [ТС] 4
Usaga, искал, нет ничего.

Добавлено через 1 минуту
Diamante, при запуске сервера указываешь какой порт использовать, стандарт для этой игры 7777. Далее вбиваем netstat -tulpan и видно, что сервер открыт для мира на порту 7777 udp.

Добавлено через 1 час 36 минут
На занятость порта никак не проверить?
0
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
20.10.2016, 14:45 5
Цитата Сообщение от vinste Посмотреть сообщение
На занятость порта никак не проверить?
Я тебе уже обрисовал ситуацию. Что тебе не ясно в моём прошлом сообщении? Или ты имеешь в виду, что нужно проверить занятость порта на локальной машине ?
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
20.10.2016, 14:52  [ТС] 6
Usaga, нужно проверить на занятость порта 7777 на vds сервере. Не на доступность (открыт, закрыт), а именно на занятость(свободен,занят)
0
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
20.10.2016, 16:12 7
vinste, у UDP нет такого понятия как открыт\закрыт\свободен\занят. Либо его прослушивает какой-то сервис, либо нет. Локально, это узнать можно (операционка в курсе, кто и какие порты пытается использовать). А вот удалённо только один способ - попытаться пообмениваться данными со службой слушающей данный порт. Если на нём ничего нет, то ответа ты не получишь. Так же ответа ты не получишь, если служба не захочет отвечать.

Добавлено через 6 минут
Скажи, чего ты добиться пытаешься? Если у тебя есть доступ к этому VDS, то ты автоматически должен быть в курсе того, что там происходит, что там открыто\закрыто.
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
20.10.2016, 16:13  [ТС] 8
Usaga, Хорошо, как допустим опросить данный порт? Отправить что нибудь и получить ответ? Помогите программно.
0
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
20.10.2016, 16:17 9
Попробуй так.
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
20.10.2016, 18:35  [ТС] 10
Usaga, при принятии информации, по примеру, он принимает вечно. Ждал минут 20, ничего не произошло, снял задачу программы, убив её.
0
Эксперт .NET
12079 / 8388 / 1281
Регистрация: 21.01.2016
Сообщений: 31,601
20.10.2016, 19:46 11
vinste, может быть это потому, что никто ничего не шлёт?
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
20.10.2016, 19:54  [ТС] 12
Usaga, именно), попробовал отправить слово тест, в ответ все равно ничего не происходит... Я уже не знаю... Не может быть такого, чтобы никто с этим не сталкивался... Что делать :/ не знаю
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
20.10.2016, 20:07 13
Цитата Сообщение от vinste Посмотреть сообщение
Не может быть такого, чтобы никто с этим не сталкивался
Если этот сервер публичный, вы бы хоть его адрес огласили, что-ли... Может кто-то и занимался таким вопросом. А создавать сферических коней тут не умеют.
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
20.10.2016, 20:08  [ТС] 14
insite2012, Вот ип 176.32.36.47:7777 игрового сервера.

Добавлено через 34 секунды
Вот ип не рабочего сервера (отключенного) 176.32.36.47:7770 (ПРИМЕР)
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
20.10.2016, 20:13 15
Цитата Сообщение от vinste Посмотреть сообщение
Вот ип 176.32.36.47:7777 игрового сервера.
Он для внешнего доступа из браузера доступен? Или к нему подключаются только программно?
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
20.10.2016, 20:18  [ТС] 16
insite2012, как правильно обьяснить - не знаю. Но есть сайт, "мониторинг игровых серверов SA-MP", там пишется о любом запущенном сервере информация: Статус, сколько игроков и т.д. Пример таких мониторингов:
https://samp-rating.ru/

Добавлено через 1 минуту
Вот статистика, выше указанного адреса: https://samp-rating.ru/server/6798/
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
20.10.2016, 20:24 17
Цитата Сообщение от vinste Посмотреть сообщение
там пишется о любом запущенном сервере информация: Статус, сколько игроков и т.д.
Хм... А что мешает использовать этот сайт для своих целей? Например, узнать количество игроков, если 0-то сервер не используется.
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
20.10.2016, 20:26  [ТС] 18
insite2012, Потому что, для начала нужно будет написать АПИ авторизации на этот сайт, далее АПИ для добавления нового сервера, далее АПИ для считывания информации. Слишком гиблое дело, а если вдруг сайт закроется.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
20.10.2016, 20:28 19
Цитата Сообщение от vinste Посмотреть сообщение
для начала нужно будет написать АПИ авторизации на этот сайт, далее АПИ для добавления нового сервера, далее АПИ для считывания информации. Слишком гиблое дело
А кому сейчас легко? Если других вариантов нет, то этот путь вполне приемлем.
Цитата Сообщение от vinste Посмотреть сообщение
а если вдруг сайт закроется.
Всякое может быть. Но информация вам нужна здесь и сейчас, а думать о том, что будет, если... не имеет смысла.
0
0 / 0 / 1
Регистрация: 26.02.2015
Сообщений: 59
20.10.2016, 21:56  [ТС] 20
insite2012, По моему я нашел решение, сейчас проверю и отпишусь.

Добавлено через 1 час 28 минут
http://wiki.sa-mp.com/wiki/Query_Mechanism/Csharp

Вот полезная стать! Получилось не только состояние сервера проверить, но и получить полную информацию о нём, с помощью отправки запросов на UDP порт (впринципе в данной теме решение шло в ту тему, то что именно отправлять, никто бы не смог сказать, без данной статьи) Всем спасибо за старания, до скорых вопросов
0
20.10.2016, 21:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2016, 21:56
Помогаю со студенческими работами здесь

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

Достучаться до порта UDP из интернета
Здравствуйте. Я уже не знаю что делать, ребят, может подскажите. Задача такая, На сервере...

Использование TCP/UDP порта 2 программами
Есть один интересный вопрос: Возможно ли использование стандартного порта TCP/UDP используемого В...

Проброс UDP порта при динамическом IP
Народ, такой вопрос, мне тут в МГТС сообщили что для того что бы пробросить порт UDP (именно UDP)...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru