Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2012, 12:48   #1
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию Сканер портов на удаленной машине

У меня есть некий IP-адресс компьтера, как можно на delphi проверить открыт ли тот или иной порт?

Например: Мне надо узнать открыт ли порт 777 ? Знаю только IP-адресс.

Как или с помощью чего это можно реализовать?
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 28.02.2012, 12:59   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

с помощью сокета попробовать подрубиться.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.02.2012, 13:52   #3
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

Я тут нагугли что то
Код:
program Scanner;

{$APPTYPE CONSOLE}
uses

SysUtils, WinSock2;

var

D: TWSAData;
S : TSocket;
A : TSockAddr;
ports : Integer;
PName : String;
tec : PServEnt;
begin
writeln('Port Scanner by Dark Eagle');
writeln;
if paramcount < 1 then
begin
writeln('Usage : '+paramstr(0)+' 127.0.0.1 1 1024');
exit;
end;
if WSAStartup(MAKEWORD(2,0), D) <> 0 then
begin
writeln('Error');
exit;
end;
A.sin_family := AF_INET;
A.sin_addr.S_addr := inet_addr(pchar(paramstr(1)));
S := socket(AF_INET, SOCK_STREAM,0);
if S = INVALID_SOCKET then
begin
writeln('Invalid socket');
exit;
end;
for ports := StrToInt(paramstr(2)) to StrToInt(paramstr(3)) do
begin
A.sin_port := htons(ports);
tec := getservbyport(htons(ports), 'TCP');
if tec = nil then
PName := 'Unknown'
else
begin
PName := tec.s_name;
end;
if connect(S,@A,sizeof(A))=0 then
writeln(IntToStr(ports)+' '+ PName +' open')
else
writeln(IntToStr(ports)+' '+ PName +' close');
end;
WSACleanup;
closesocket(S);
writeln;
writeln('Scan complete');
end.
Мне кажется тут долно все работать.

Объсните кто знает что тут произходит в некоторых строках, или можно ли это как то по проще написать, просто не хочу тупо код копировать) хочу понять как это работает
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 28.02.2012, 20:08   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

что не понятно?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сканер портов CallBit C/C++ Сетевое программирование 4 07.02.2011 16:17
PHP на удаленной машине Д'якон PHP 4 02.05.2010 01:13
Сканер портов OPF_Nik Работа с сетью в Delphi 2 29.01.2010 19:26
залогиненный пользователь на удаленной машине KEV Работа с сетью в Delphi 4 25.09.2009 17:16
Авторизация на удаленной машине Баламут Работа с сетью в Delphi 2 03.03.2009 08:16