Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2

nickolayLI ©   (2002-10-21 07:16:00) 

Привет всем знатокам и мастерам!

Собственно субж как можно реализовать, можно конечно броадкаст послать, но не омгу сообразить как это сделать, есть какие-нить доки/примеры


/*Drive*/   (2002-11-06 06:19:00) [1]

sadr2.sin_addr.S_addr:=inet_addr(pchar(ИМЯ ХОСТА));

Это просто кусок моего кода!!!
Сейчас пишу !!!! И всё работает !!!


s002156Shurik   (2002-11-06 00:53:00) [2]

Оно не зацикливается а пытается сделать коннект
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 компов повозможности.


nickolayLI   (2002-11-05 13:56:00) [3]

Вылетает сообщение об ошибке что "этот хост не найден" и всё млин, а какой хост не понятно...
первый из списка наверно.


nickolayLI   (2002-11-05 13:38:00) [4]

вот ведь... не идет и всё тут :(


nickolayLI   (2002-11-05 12:13:00) [5]

ладно и с этим тоже разобрался...
но не идет


nickolayLI   (2002-11-05 12:08:00) [6]

хм.. с этим типом понятно всё
а вот bs?


nickolayLI   (2002-11-05 12:07:00) [7]

хм...
еще бы знать что это за зверь такой sadr2? какого типа?


/*Drive*/   (2002-11-05 08:03:00) [8]

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 07:04:00) [9]

хм...
он в цикл заходит, и зацикливается на первой тачке из списка :(


s002156Shurik   (2002-11-05 01:42:00) [10]

подключается
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-04 20:08:00) [11]

делал я такое, и что?!
тут приводили пример
while not Active do Application.ProcessMessages
но ты сам попробуй, найти машинку с заданным портом, но не с заданным сервером...
туфта...
у меня просто, есть мысль, писать на чистом АПИ... :(((
потому, что ИМХО нет чистой обратобки ClientScoket and ServerSocket на ниазком уровне :(

... PS. А хотелось бы ... а может и не прав я ...


valnech   (2002-11-04 16:50:00) [12]

Надо ждать пока 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 15:24:00) [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 15:11:00) [14]

ПОДКЛЮЧАЕТСЯ? Или ПЫТАЕТСЯ подключиться?


nickolayLI   (2002-11-04 15:09:00) [15]

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


valnech   (2002-11-04 15:01:00) [16]

Ты куда IP хочешь подставлять? Туда можно просто ИМЯ тачки :)


nickolayLI   (2002-11-04 14:50:00) [17]

хм... дык тама по именам а мне нужно по айпи :(


valnech   (2002-11-04 14:02:00) [18]

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1035826977&n=4
- переборка всех компов, далее - цикл с подключением ( ClientSocket.Host = items[i]) с обработкой ошибки 10061 - наверное, надо делать так...


nickolayLI   (2002-11-04 09:00:00) [19]

да я делаю через tclientsocket and tserversocket


vidiv   (2002-10-23 02:07:00) [20]

nickolayLI ==>>
Ты через Sockets делаешь?

Потому что если сделать NMUDP то можно отправить широковещательное сообщение и та машина которая тебе нужна на него отчвечает и ты знаешь ее IP и порт...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо