Форум: "Сети";
Текущий архив: 2003.01.02;
Скачать: [xml.tar.bz2];
Внизнайти тачку в сети с заданным портом Найти похожие ветки
← →
nickolayLI (2002-10-21 07:16) [0]Привет всем знатокам и мастерам!
Собственно субж как можно реализовать, можно конечно броадкаст послать, но не омгу сообразить как это сделать, есть какие-нить доки/примеры
← →
Rouse_ (2002-10-21 07:25) [1]Пишешь программу аналогичную сканеру портов, только скашишь не порты а адреса (так как порт у тебя известен)
Желаю успехов
← →
nickolayLI (2002-10-21 08:09) [2]угу, еще у каждого адреса нужно порт опеределить, но как?
это писать что-то вроде ./nmap"a, только в упращенном варианте? :)
← →
nickolayLI (2002-10-21 15:51) [3]люди ну помогите же,а? :(
← →
vidiv (2002-10-22 07:13) [4]а 192.168.1.255 не как? или я не в тему?
← →
nickolayLI (2002-10-22 09:15) [5]не много не в тему, мне нужно именно найти машину в сети с заданным портом, т.е. перебрать все тачки в сети и выявить ту которая нужна, у которой порт открыт тот который мне нужен.
← →
vidiv (2002-10-23 02:07) [6]nickolayLI ==>>
Ты через Sockets делаешь?
Потому что если сделать NMUDP то можно отправить широковещательное сообщение и та машина которая тебе нужна на него отчвечает и ты знаешь ее IP и порт...
← →
nickolayLI (2002-11-04 09:00) [7]да я делаю через tclientsocket and tserversocket
← →
valnech (2002-11-04 14:02) [8]http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1035826977&n=4
- переборка всех компов, далее - цикл с подключением (ClientSocket.Host = items[i]
) с обработкой ошибки 10061 - наверное, надо делать так...
← →
nickolayLI (2002-11-04 14:50) [9]хм... дык тама по именам а мне нужно по айпи :(
← →
valnech (2002-11-04 15:01) [10]Ты куда IP хочешь подставлять? Туда можно просто ИМЯ тачки :)
← →
nickolayLI (2002-11-04 15:09) [11]ну да вообще-то это я потом уже об этом подумал :),
но фича в другом короче я делаю в цикле подключение к хосту, так он млин (клиент) подключается к каждой тачке, а не к той которой надо, т.е. серверу :(
причем сразу к первой тачке в списке :(
хотя тама нету открытого порта на который нужно зецепиться :(
← →
valnech (2002-11-04 15:11) [12]ПОДКЛЮЧАЕТСЯ? Или ПЫТАЕТСЯ подключиться?
← →
nickolayLI (2002-11-04 15:24) [13]подключается
for i := 0 to Memo1.Lines.Count - 1 do begin
with ClientSocket1 do begin
nFindHost:=Memo1.Lines.Strings[i];
if nFindHost <> "" then begin
Host := nFindHost;
Port := 3333;
if Active = true then break;
end;
end;
end;
← →
valnech (2002-11-04 16:50) [14]Надо ждать пока ClientSocket1.Active станет true примерно так While not ClientSocket1.Active do Application.ProcessMessages;
(c)Мазут Береговой (01.11.02 06:50)
т.е. где-то здесь:
if nFindHost <> "" then begin
Host := nFindHost;
Port := 3333;
if Active = true then break;<------
end;
← →
NickolayLi (2002-11-04 20:08) [15]делал я такое, и что?!
тут приводили пример
while not Active do Application.ProcessMessages
но ты сам попробуй, найти машинку с заданным портом, но не с заданным сервером...
туфта...
у меня просто, есть мысль, писать на чистом АПИ... :(((
потому, что ИМХО нет чистой обратобки ClientScoket and ServerSocket на ниазком уровне :(
... PS. А хотелось бы ... а может и не прав я ...
← →
s002156Shurik (2002-11-05 01:42) [16]подключается
for i := 0 to Memo1.Lines.Count - 1 do begin
with ClientSocket1 do begin
nFindHost:=Memo1.Lines.Strings[i];
if nFindHost <> "" then begin
try
Active := false;
Host := nFindHost;
Port := 3333;
Active := true;
break;
except
end;
end;
end;
end;
если при активизации сокета ошибка невылетела то произошол конект с удаленной машиной по данному порту, и соответственно выход из цикла. Иначе обрабатывается исключение и цикл продолжается!.
← →
nickolayLI (2002-11-05 07:04) [17]хм...
он в цикл заходит, и зацикливается на первой тачке из списка :(
← →
/*Drive*/ (2002-11-05 08:03) [18]for ptnum=1 to 255 do
begin
wsastartup($101,wsa2);
s2:=socket(af_inet,SOCK_stream,IPPROTO_tcp);
sadr2.sin_family:=AF_inet;
sadr2.sin_port:=htons(ptnum);
sadr2.sin_addr.S_addr:=inet_addr(pchar(bs+inttostr(check)));
if connect(s2,sadr2,sizeof(sadr2))=0 then
begin
end;
end;
← →
nickolayLI (2002-11-05 12:07) [19]хм...
еще бы знать что это за зверь такой sadr2? какого типа?
← →
nickolayLI (2002-11-05 12:08) [20]хм.. с этим типом понятно всё
а вот bs?
← →
nickolayLI (2002-11-05 12:13) [21]ладно и с этим тоже разобрался...
но не идет
← →
nickolayLI (2002-11-05 13:38) [22]вот ведь... не идет и всё тут :(
← →
nickolayLI (2002-11-05 13:56) [23]Вылетает сообщение об ошибке что "этот хост не найден" и всё млин, а какой хост не понятно...
первый из списка наверно.
← →
s002156Shurik (2002-11-06 00:53) [24]Оно не зацикливается а пытается сделать коннект
for i := 0 to Memo1.Lines.Count - 1 do begin
with ClientSocket1 do begin
nFindHost:=Memo1.Lines.Strings[i];
if nFindHost <> "" then begin
try
Active := false;
Host := nFindHost;
Address := nFindHost;
Port := 3333;
Active := true;
break;
except
end;
end;
end;
end;
и в списке хостов прописывай ip компов повозможности.
← →
/*Drive*/ (2002-11-06 06:19) [25]sadr2.sin_addr.S_addr:=inet_addr(pchar(ИМЯ ХОСТА));
Это просто кусок моего кода!!!
Сейчас пишу !!!! И всё работает !!!
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.01.02;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.004 c