Napisałem sobie ten skaner, ale chciałem się upewnić czy zrobiłem to poprawnie.
Oto kod:
Dziękuje za odpowiedzi.
Oto kod:
Kod:
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iostream>
#include <sstream>
int main()
{
int sock;
addrinfo hints, *addr;
WSAData data;
if(WSAStartup(MAKEWORD(2,2), &data) != 0)
{
std::cerr << "Can't initialize winsock 2.2";
return -1;
}
ZeroMemory(&hints, sizeof (hints));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
hints.ai_flags = AI_PASSIVE;
char port[10];
std::stringstream ss;
for(int i = 0; i < 65535; ++i)
{
ss << i;
ss >> port;
getaddrinfo(0, port, &hints, &addr);
sock = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
if(bind(sock, addr->ai_addr, addr->ai_addrlen))
std::cout << "port :\t" << i << "\t open\n";
ss.clear();
freeaddrinfo(addr);
shutdown(sock, SD_BOTH);
closesocket(sock);
}
return 0;
}