Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Скан ip, на открытый порт[Delphi] (https://forum.antichat.xyz/showthread.php?t=170080)

OPF_Nik 11.01.2010 21:22

Скан ip, на открытый порт[Delphi]
 
Народ, как при нажатии кнопки проверить ip на определенный порт, не используя не каких компонентов, если открыть, то записать в файл txt ??

wolmer 11.01.2010 21:44

Сейчас делфи нету но попытаюсь написать (так что подправьте меня если я где то сделал ошибку)
Код в создании формы:
Код:

var
 ws:wsadata;
begin
 wsastartup($101, ws);
end;

Процедура:
Код:

var
 sock: tsocket;
 ServerInfo: sockaddr_in;
begin
 sock:=socket(af_inet, sock_stream, 0);
 ServerInfo.sin_family := AF_INET;
 ServerInfo.sin_addr.s_addr := inet_addr('188.40.76.205');
 ServerInfo.sin_port := htons(80);

 if connect(sock, ServerInfo, sizeof(serverinfo))=0 then
  begin
    ShowMessage('Порт открыт');
    //Тут можно написать запись в файл
  end
 else
  begin
    ShowMessage('Порт закрыт');
  end;
end;

Ах да и в uses пропиши -> winsock
(если не разберешься или будет ошибка/ошибки -> отпишись, помогу)

OPF_Nik 11.01.2010 23:23

wolmer спс

OPF_Nik 11.01.2010 23:27

Код:

ServerInfo.sin_family = AF_INET;
 ServerInfo.sin_addr.s_addr = inet_addr('127.0.0.1');
 ServerInfo.sin_port = htons(80);

Тут ошибку показывает:
[Error] Unit1.pas(32): ':=' expected but ':' found

xafon 11.01.2010 23:31

ServerInfo.sin_family := AF_INET;
ServerInfo.sin_addr.s_addr := inet_addr('127.0.0.1');
ServerInfo.sin_port := htons(80);

OPF_Nik 11.01.2010 23:38

Прога работает, но всегда показывает, что порт закрыт

OPF_Nik 11.01.2010 23:40

cheater_man
Для того же, зачем тебе С++

sn0w 12.01.2010 15:23

wolder ptr ты забыл походу от SOCKADDR
чем могу... ибо не по делфе я...

Код:

BOOL IsPortOpen(char *hostip, WORD dport)
{
        WSADATA wsd;
        WSAStartup(0x202, &wsd);

        SOCKET sck;
        SOCKADDR_IN addr;
        int rc;

        addr.sin_family = AF_INET;
        addr.sin_port = htons(dport);
        addr.sin_addr.S_un.S_addr = inet_addr(hostip);

        sck = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        rc = connect(sck, (LPSOCKADDR)&addr, sizeof(addr));

        if(rc == 0){
                closesocket(sck);
                return TRUE;
        }


        return FALSE;
}



Время: 05:56