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

Вниз

найти тачку в сети с заданным портом   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.006 c
14-1874
DennisL
2002-12-13 11:48
2003.01.02
Иконки для кнопок состоящие из четырех частей ?


14-1897
Сергей
2002-12-11 18:26
2003.01.02
Случайная величина


1-1836
TCrash
2002-12-21 11:03
2003.01.02
TTreeView в качестве навигатора


1-1838
VaS
2002-12-19 16:02
2003.01.02
DCOM


6-1846
Weber
2002-11-06 04:10
2003.01.02
программа для админ. доступа к нету...