![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему не работает??? [D6, Win95/98, WinME, NT4, Win2k, WinXP]
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, то это говорит именно о том, что какой-то там "порт открыт" ? Чем ты руководствуешься при таком умозаключении, каким документом ?