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

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

Почему не работает??? [D6, Win95/98, WinME, NT4, Win2k, WinXP]


Страницы:   1 2

serd_hhc ©   (2002-11-26 00:16:00) 

Задача: проверить все компы в подсети (в данном случае 192.168.0.1-192.168.0.255). Но почему-то прога говорит, что этот порт откпыт у всех компов... даже у выключенных... что делать???
подскажите...

procedure TForm1.Search;
type
Tapyaddr=array [0..255] of PInAddr;
Papinaddr=^Tapyaddr;
var
s:TSocket;
WSAData:TWSAData;
addr:TSockAddr;
IP:string;
Server : PHostEnt;
i:integer;
begin
IP:="192.168.0.1";
WSAStartup(MakeWord(2,0),wsaData); //или MakeWord(1,1)
s := socket(AF_INET, SOCK_STREAM, 0);
if s=INVALID_SOCKET then exit;
addr.sin_family := AF_INET;
addr.sin_port := htons(3113); //порт №3113
for i:=Length(newip) downto 6 do if newip[i]="." then
begin
newip:=Copy(newip,1,i); //получаем строку "192.168.0."
break;
end;
for i:=1 to 255 do
begin
addr.sin_addr.s_addr:=inet_addr(PChar(IP+IntToStr(i)));
if connect(s, addr, sizeof (addr))<>SOCKET_ERROR then
Writeln(IP+IntToStr(i)+" : "+"port is open!");
closesocket(s);
end;
WSACleanup;
end;

объясните же мне в чём дело, или предложите свои коды...


Serd_hhc   (2002-11-27 13:53:00) [21]

Я читал... даже МСДН, и там написано, что она должна возвращать 0, если коннект произошёл. Но скока я не тестировал, коннекта НЕ БЫЛО! Т.Е. все компы говорили, что порт закрыт, хотя я специально повешал на 3113 сервисы и на разных компах! Но нет же... я прошу помочь... помогите...


Digitman   (2002-11-27 08:56:00) [22]


> Да вот помогли ЛЮДИ добрые...
>
> а что дела-то надо???


Не "сдирать безбашенно" чужой код, а думать самому ! И читать документацию. А если уж "содрал" - разберись в каждой строчке до мелочей - что, зачем и почему так, а не иначе.

Открывай хэлп Winsock 2 programmer"s reference и читай внимательно, что возвращает ф-ция connect(), при каких условиях и какова д.б. реакция в каждом конкретном случае


Serd_hhc   (2002-11-26 19:24:00) [23]

Да вот помогли ЛЮДИ добрые...

а что дела-то надо???


Digitman   (2002-11-26 12:47:00) [24]

на основании чего ты считаешь, что, если connect(..) <>SOCKET_ERROR, то это говорит именно о том, что какой-то там "порт открыт" ? Чем ты руководствуешься при таком умозаключении, каким документом ?


Страницы:   1 2

Наверх

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