Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.21;
Скачать: CL | DM;

Вниз

Поиск сервера для TClientSocket   Найти похожие ветки 

 
Vaddya   (2001-09-06 00:27) [0]

Как можно найти запущенный сервер в сети, сделанный на основе TServerSocket, по типу того, как это делают сетевые игры (без указания Address или Host)?


 
Борис ©   (2001-09-06 09:05) [1]

Получаешь список машин в сети, и пробуешь подсоедениться к каждой, если подцепился, значит серевер. Помойму так. С уважением, Борис


 
SKiwa ©   (2001-09-06 10:53) [2]

Более корректно так.
Посылаешь Broadcast на определенный порт
формат запроса и ответа должен быть четко определен.
А в ответе могут быть параметры для TCP.
Для всего этого лучше использовать компоненты Indy
там есть и UDP-клиент и UDP-сервер и возможность посылать Broadcast
Да и TCP лучше брать там же.


 
SKiwa ©   (2001-09-06 11:07) [3]

Если никто не возражает, я расширю вопрос :)
В данный момент работаю над тем-же.

для TIdUDPClient
procedure Broadcast(const AData: string; const APort: integer);
т.е. Сообщение посылается по адресу 255.255.255.255 (см. исходники)

Мне это не нравиться.

Я хочу знать маску подсети, чтобы послать например на 10.1.1.255.
Мне известен один способ получения маски посредством "inetmib1.dll"
для которой есть "C" декларации
например
BOOL SnmpExtensionInit(
DWORD dwTimeZeroReference,
HANDLE *hPollForTrapEvent,
AsnObjectIdentifier *supportedView
);
Так вот просьба, если у кого есть Pascal декларации функций, типов данных, рекордов(структур) и т.д. для "inetmib1.dll"
Не сочтите за наглость, но зачем зря возиться, если уже кто делал. :))

Или альтернативное решение проблемы получения маски.

Буду весьма благодарен.


 
Vaddya   (2001-09-06 23:16) [4]

А не проще ли, как сказал Борис, брать список машин в подсети и пробывать подключаться методом тыка?


 
SKiwa ©   (2001-09-07 11:07) [5]

Если рассуждать с точки зрения единственной задачи, которую написал и забыл, то может быть проще, а если с точки зрения закрыть проблему раз и навсегда, для всех последующих задач, то можно поспорить.
Правда спорить желания нет. :)
Мне действительно необходимо то что я говорил, Pascal декларации уже сделал, сегодня постараюсь сделать остальное.
Если потенциальные посетители дадут поработать :)


 
Anton   (2001-09-07 13:29) [6]

2 Skiwa:Можно кинуть в меня этими декларациями?


 
SKiwa ©   (2001-09-07 14:23) [7]

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


 
SKiwa ©   (2001-09-10 10:38) [8]

Проверенно, работает(на NT). Но на win95 нет. требуется snmpapi.dll
На 98 и т.д. не проверял.


 
Vaddya   (2001-09-17 22:15) [9]

Я, вообще-то, задавая вопрос, имел в виду другое. Например, открываем Quake 2, заходим Multiplayer -> Join network server. Выводится список всех доступных серверов, а в консоли в это время пишется: "Pinging broadcast..." и также выводятся сервера, к которым можно подключиться. Так вот, как осуществить этот Pinging broadcast с помощью TClientSocket/TServerSocket (Не Indy)? Желателен кусок кода сюда для всех или лично мне на "мыло".


 
Stepan   (2001-10-28 20:18) [10]

Да, у меня точно такая же проблема. как у Vaddya
один в один. И я ненашел на нее ответа в этой дискуссии.

Довайте ее возобновим, т.к. мне тоже необходимо решить эту проблему.
Заранее благодарен.
С уважением, Гавриленко Степан.


 
SKiwa ©   (2001-10-29 08:53) [11]

Мне кажется, я дал достаточно полный ответ см. SKiwa © (06.09.01 10:53).
Придумать можно много решений.
Простейшее - Клиент посылает Broadcast сообщение и в течение некоторого времени принимает ответы от серверов, тем самым формирую их список.

Broadcast("Ау!!!");
While(True) do begin
Str := ReceiveStr;
Strings.Add(Str);
if TimeAut then
Break;
end;

На чем реализовать на Indy или TClientSocket/TServerSocket неважно, я конкретно эту задачу делал на Indy.
А уж как послать BroadCast и принять ответ это вопрос отдельный.
По TClientSocket/TServerSocket можно спросить Digitman, если не ошибаюсь он этот вопрос хорошо знает.
По Indy можно спрашивать меня.


 
Dust ©   (2001-10-29 12:38) [12]

Могу предложить свое решение. Работает ТОЛЬКО в виндюковской сетке.
В WinAPI есть функции Eumo-ов сетей, рабочих групп и хостов. Для локалки этого вполне достаточно. Есть и готовое рещение, но оно стоит $ - так не кину.



Страницы: 1 вся ветка

Текущий архив: 2002.01.21;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.007 c
3-66196
Joe
2001-12-18 11:49
2002.01.21
Interbase


1-66254
Builder
2002-01-03 17:00
2002.01.21
Копирование запущенного файла


1-66289
LAlex
2002-01-04 18:38
2002.01.21
Искуственный интеллект


1-66272
Quaker
2002-01-04 06:30
2002.01.21
ActiveX


3-66224
szap
2001-12-03 15:47
2002.01.21
Заполнение БД данными из Excel