Hi @LL!
Pisalem nie dawno o tym jak sprawdzic otwarte porty, ale nikt nie odpowiedzial... Tak więc powtarzam pytanie:
Jak sprawdzić jakie porty sa otwarte?
Najlepiej bez użycia Indy bo nie jestem w tym zbyt dobry...
Jak nikt nie wie, to nie odpowie.
Hi @LL!
Pisalem nie dawno o tym jak sprawdzic otwarte porty, ale nikt nie odpowiedzial... Tak więc powtarzam pytanie:
Jak sprawdzić jakie porty sa otwarte?
Najlepiej bez użycia Indy bo nie jestem w tym zbyt dobry...
nie wiem co to dokładnie otwarty port ale jak ci chodzi o skaner portów
to się chyba bierze ClientSocket łączy z każdym portem po kolei i jak
wystąpi zdażenie onConnect to otwarty a jak error wywali to nie.
A oprocz socketow jest jakas inna mozliwosc?
I czy skanowanie każdego portu socketem to nie trwalo by za dlugo?
ja wiem :-)
wystarczy linux i komenda :
nmap -p 1-64000 nazwa.hosta
troche to trwa ale zawsze mozna zmniejszyc liczbe badanych portow
a programowo
otwierasz gniazdo na danym porcie i sprawdzasz czy jest error jak jest to port zamkniety jak ok to otwarty
przyklad kodu dla otwarcia portu [code]
struct sockaddr_in servaddr;
struct hostent *buf ;
struct in_addr **paddr;
socklen_t socklen;
bzero(&servaddr ,sizeof(servaddr));
servaddr.sin_family = AF_INET ;
servaddr.sin_port = htons(params->opts.port) ;
if ( (sockfd = socket(AF_INET , SOCK_STREAM , 0)) < 0 ){
cerr - "Cannot create socketn";
exit(1);
}
if ( (buf = gethostbyname(host_name)) == NULL )
cerr - "Unknown host : " - host_name - endl;
else {
paddr = (struct in_addr **)buf->h_addr_list ;
if (!(inet_aton(inet_ntoa(**paddr) , &servaddr.sin_addr)) )
cerr - "Cannot convert adress - critical errorn" ;
if (connect(sockfd , (struct sockaddr *) &servaddr , sizeof(servaddr)) )
cerr "Cannot create connection - server not responding";
else {
cout - "HOST : " - host_name - endl ;
}
}
}[/code]
... oczywiscie dla linux'a [hurra]
pozdrawiam wojta$
A to ciekawe.