Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/43: Рейтинг темы: голосов - 43, средняя оценка - 4.58
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232

Проверка одного порта нескольких IP

07.05.2013, 11:23. Показов 8989. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день! Как можно про сканировать несколько IP адресов например 192.168.1.1 до 192.168.1.255 на открытость порта например 1111. Делаю программу для передачи файлов любых размеров, DragAndDrop. Настала необходимость заносить в combobox имена или ip адреса те у кого открыт порт 1111. Не подскажите реализацию сканера? Желательно кодом.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.05.2013, 11:23
Ответы с готовыми решениями:

Проверка на существование нескольких файлов в нескольких папках
есть 5 папок(1,2,3,4,5), в них находятся 5 файлов( в каждой папке по файлу с известными именами) (1.txt,2.txt 3.txt, 4.txt, 5.txt) при...

Проверка нескольких textbox на пустоту, а также проверка их значения
Имеется textbox1, textbox2, textbox3, button1. Нужно сделать так, чтобы проверялось условие: Если хотя бы один из textbox пуст или его...

Проверка порта на up / down
Есть несколько коммутаторов, можно ли средствами PHP получить значение состояния портов коммутатора (up/down)?

42
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.05.2013, 18:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от cezer_ak Посмотреть сообщение
диапазон в котором присутствует сервер 1С
Так ты исключи хост сервера из списка сканируемых хостов - и сразу станет понятно твоя ли программулина мешает ..
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
07.05.2013, 18:10  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
...
Просто сегодня пробовал не диапазоном, а именно указывать ip, все равно база слетала. Позже проверю дома. пока что идей больше нет. Спасибо за советы!
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.05.2013, 18:12
Цитата Сообщение от cezer_ak Посмотреть сообщение
ping.port := 6666; //Здесь указываем порт программы сервераю
Уж больно подозрительный порт ты хочешь использовать)

6666
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
07.05.2013, 21:33  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
...
Да уж не удачный выбор порта) Хотя писал от балды. Ладно завтра исправлю спс за ссыль.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.05.2013, 21:44
Таки не понятно кому и зачем нужен этот геморрой со "сканированием" ..
Ну сделай ты на хосте, который должен передавать файлы, соответствующий сервис - и пусть хосты, которые заинтересованы в получении файлов, сами коннектятся к твоему сервису.

То есть поставь схему взаимодействия с головы на ноги : передающий файлы (и занимавшийся хренью со сканированием) клиент на определенном всем в сети известном хосте становится сервером, а серверы на разных прочих хостах становятся клиентами.
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
08.05.2013, 08:58  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
...
Программа будет исполнять роль и сервера и клиента. Двунаправленная связь. что то типа Загружаешь программу она сканирует сеть если есть в сети сервер заносит в лист клиентов. Выбираешь файл а точнее переносишь на форму выбираешь из списка кому отправить и он отправляет.

Добавлено через 42 минуты
Цитата Сообщение от mss Посмотреть сообщение
Так ты исключи хост сервера из списка сканируемых хостов - и сразу станет понятно твоя ли программулина мешает ..
MSS ты был прав) исключил сервер из списка, начал сканировать ошибок не наблюдалось! Но почему он выбивал 1С для меня наверное останется загадкой.((
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
08.05.2013, 09:32
Цитата Сообщение от cezer_ak Посмотреть сообщение
Программа будет исполнять роль и сервера и клиента
Есть мнение что имея под полным контролем полноценный серверный хост, да еще с AD-контроллером на борту, разворачивать в односегментной сети децентрализованный сетевой прикладной сервис - глупейшая затея.
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
08.05.2013, 09:58  [ТС]
В Ходе испытаний было выявленно следующее: Даже если не брать в скан IP адресс сервера 1С то локальный чат вылетает у всех поголовно и заново подключается (это не рекламаVypresыChat)) Если подключать в место TCP - UDP то 1С ошибок не наблюдает и сканирует быстрее порты, чат соответственно не сбоит. Полёт отличный переходим к следующим действиям.

Добавлено через 3 минуты
Цитата Сообщение от mss Посмотреть сообщение
...
С добрым утром MSS) ты прав глупая затея! у меня так же настроен файловый сервер. Но необходимость программы в том что это быстрее тем что эта программа будет как виджет на рабочем столе. небольшое окошко кидаешь на форму файл выбираешь кому и все готово.

Добавлено через 8 минут
Цитата Сообщение от mss Посмотреть сообщение
...
Вопрос в этом куске кода:

Delphi
1
2
3
4
5
6
7
8
9
10
if jiv then
begin
Form1.Memo1.Lines.Add(host + ' Порт ' + IntToStr(port) + ' Жив');
Form1.ComboBox1.Clear;
Form1.ComboBox1.AddItem(host);
end
else
begin
Form1.Memo2.Lines.Add(host + ' Порт ' + IntToStr(port) + ' Мёртв');
end;
ругается на строчку
Delphi
1
Form1.ComboBox1.AddItem(host);
Добавлено через 12 минут
Чет я затупил
Delphi
1
form1.ComboBox1.Items.Add(host);
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
08.05.2013, 10:09
Цитата Сообщение от cezer_ak Посмотреть сообщение
эта программа будет как виджет на рабочем столе. небольшое окошко кидаешь на форму файл выбираешь кому и все готово
Мухи и котлеты нужно отделять.
Речь сейчас идет не о визуальной составляющей распределенного сетевого сервиса, а об организации взаимодействия между компонентами этого сервиса.

На хосте, имеющем постоянный выделенный IP-адрес, работающем в режиме 24/7 и выполняющем роль выделенного сервера (пусть это, к примеру, будет твой хост AD-контроллера), следует организовать постоянно работающий сервис, координирующий взаимодействие между прочими хостами в сети (клиентами этого сервиса).

Всякий клиент сервиса при подъеме регистрируется на сервере сервиса, передавая ему инф-цию след.вида:
"Я, такой-то клиентский хост, готов принимать вх.запросы на удаленное соединение со мной для передачи мне файлов по след.координатам в сети: Такой_то_конкретно_IP_адрес_или_имя_хост а:Такой_то_конкретно_порт".

Непосредственно перед этим клиент активирует у себя серверную подсистему, которая будет слушать вх.запросы от других клиентов или от коорд.сервера, предприняв все возможные меры по обеспечению правил прохождения запросных IP-пакетов через свой файрвол и иные свои сетевые пограничные сервисы.

Сервер сервиса принимает и сохраняет рег.инф-цию о новом клиенте и распространяет ее всем ранее зарегистрировавшимся клиентам.

Соответственно при дауне клиент обязан известить сервер сервиса "Я, такой-то, ухожу из сети", а сервер сервиса извещает прочих клиентов об этом событии.

Всё. Теперь каждый клиент в каждый момент времени знает о местонахождении и активности других клиентов сервиса и может взаимодействовать с ними непосредственно (p2p) либо через сервер сервиса (если p2p по каим-то причинам невозможен)
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
08.05.2013, 10:15  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
Мухи и котлеты нужно отделять.
Согласен. Если все это сделать это будет правильно и будет полноценный сервис. Но мне пока и хватит того что сейчас есть. К стати на счет того что эти строки лишние
Delphi
1
2
3
4
5
6
7
try
IdTCPClient.Connect;
if IdTCPClient.Connected then
jiv := True
except
jiv := False;
end;
Смею не согласиться так как без этих строк в мемо не заполняется список живых хостов с открытым портом. Если я не прав подправь меня. И такой вопрос: После смены власти TCp на UDP нет возможности проверять коннект так как нет таких процедур у компонента UDP/ Как можно реализовать проверку для UDP??
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
08.05.2013, 10:54
Цитата Сообщение от cezer_ak Посмотреть сообщение
Если я не прав подправь меня
Code
1
2
3
4
5
6
try
  IdTCPClient.Connect;
  jiv := True;
except
  jiv := False;
end;
Цитата Сообщение от cezer_ak Посмотреть сообщение
Как можно реализовать проверку для UDP?
Послать в удаленный порт партнера некое предопределенное сообщение и получить от него некий-предопределенный ответ на это сообщение.
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
08.05.2013, 11:09  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
Послать в удаленный порт партнера....
ЧТо не так?
Delphi
1
2
3
4
5
6
IdUDPClient.Send('msg');
if Form1.IdUDPServer1.OnUDPRead then
jiv := True
except
jiv := False;
end;
Ругается на строчку:
Delphi
1
if Form1.IdUDPServer1.OnUDPRead then
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
08.05.2013, 11:14
Цитата Сообщение от cezer_ak Посмотреть сообщение
Ругается на строчку
Выкинь эту строчку вообще? вместе с IdUDPServer.

Вот пример.
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
08.05.2013, 11:25  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
Выкинь эту строчку вообще? вместе с IdUDPServer.

Вот пример.
С функциями у меня туговато((( я добавил, а как теперь вызвать правильно эту проверку м?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
08.05.2013, 12:23
jiv := False;
try
IdUDPClient.ReceiveString(1000);
jiv := IdUDPClient.ReceiveString(1000) = 'Response to hello';
except
end;
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
08.05.2013, 12:35  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
jiv := False;
try
IdUDPClient.ReceiveString(1000);
jiv := IdUDPClient.ReceiveString(1000) = 'Response to hello';
except
end;
Что то не то в этом коде проверка есть но где возвращение jiv:=True; чтоб в memo заносились активные хосты?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
08.05.2013, 12:59
Цитата Сообщение от cezer_ak Посмотреть сообщение
где возвращение jiv:=True
jiv будет тру при истинности условия IdUDPClient.ReceiveString(1000) = 'Response to hello'
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
08.05.2013, 13:02  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
jiv будет тру при истинности условия IdUDPClient.ReceiveString(1000) = 'Response to hello'
Т.е. я правильно понял: Отправляется на сервер запрос с заголовком 'Hello' если сервер принимает это соощение он должен отправить обратно на Адрес клиента заголовок 'Response to hello' и после этого jiv будет тру и тогда в memo запишется активный хост? Подправь пожалуйста если что то не так понял.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
08.05.2013, 13:12
Цитата Сообщение от cezer_ak Посмотреть сообщение
Т.е. я правильно понял
Правильно понял.
Но сервер должен ответить не позднее 1000мс с момента получения сообщения, иначе у клиента-отправителя возникнет исключение превышения таймаута ожидания ответа.
1
5 / 5 / 3
Регистрация: 14.02.2013
Сообщений: 232
08.05.2013, 13:35  [ТС]
Цитата Сообщение от mss Посмотреть сообщение
Правильно понял....
Что то вообще тупняк( На сервере кидаю на форму UDP server и Udp client. в UDP server пишу
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
  var
  jiv: boolean;
begin
try
IdUDPserver1.ReceiveString(1000);
jiv := IdUDPserver1.ReceiveString(1000) = 'hello';
except
end;
if jiv=true then
begin
 idudpclient1.Send('Response to hello');
end;
end;
во первых выдаёт ошибку и не может скомпилировать
Delphi
1
 procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
ругается на вот это слово в строке
Delphi
1
TIdSocketHandle
и второй вопрос это куда сервер должен отправлять сообщение как узнать с какого ip было прислано сообщение. Если даже в сообщении указывать текущий IP клиента то как сравнивать на сервере сообщения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.05.2013, 13:35

Проверка порта на C++
Нашел пример вот тут тык. и возникли проблемы с двумя участками кода: static std::vector<int> parse_ports_list(const...

Проверка порта
Пытаюсь проверить состояние ноги номер PC3 порта С и если там лог. 1 (5 В), то записать в порт B лог 1 иначе 0 #include...

Проверка доступности порта
Добрый день,подскажите,как дописать батник.Батник проверяет доступность порта,если порт не доступен,он или перегружает порт или выключает и...

Проверка доступности порта
Нашел код: #include <winsock2.h> #include <iostream> using namespace std; char IP; int start, end, temp, err, nret; ...

Проверка состояния Com -порта
ребят столкнулся с такой проблемой, как открыть закрыть и тд, это все понятно, а вот как проверить условие что в com-порте есть устройство?


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru