Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.01.21;
Скачать: [xml.tar.bz2];

Вниз

Поиск сервера для 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.004 c
3-66190
dimsfdf
2001-12-17 14:44
2002.01.21
А какой сейчас самый свежий ORACLE?


1-66235
AST
2001-12-30 01:42
2002.01.21
Размеры в Qreport


1-66245
Snake
2002-01-02 17:21
2002.01.21
Запись графики в поток


6-66331
Роллер
2001-10-25 10:51
2002.01.21
Windows SocketError: что за ошибки?


6-66319
Alex
2001-10-26 23:43
2002.01.21
Вопросик?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский