Почему сканер портов подключается всего к одному порту? Написал простой сканер портов на асинхронных сокетах. Соединение при сканировании mail.ru и диапазоне [1; 1024] удается установить только на порт 25, на остальные - безуспешно. Кусок main():port_range range; //structure for saving range of ports (std::cin >> range.from >> range.to).get(); con_list cons; //std::vector of structures with sockets sockaddr_in server_data; u_long cmd = 1; fd_set write; timeval wait_time = { 0, 0 }; USHORT port = range.from; server_data.sin_family = AF_INET; tmp.s_addr = *(u_long*)remote_host_info->h_addr; inet_pton(AF_INET, (PCSTR)inet_ntoa(tmp), &server_data.sin_addr); while (true) { //CONNECTION PHASE if (port #include #include #include #include #include #include #define ECHO_PORT 32768 #define WSA_VERSION 0x0202 #define LOCALHOST "127.0.0.1" #define BUFF_SIZE 8192 #define BACKLOG 4 #define WAIT_TIME 10 #define INPUT_BUFF 16 namespace con_mode { enum mode { write, read, input //for client }; } typedef struct async_connection { SOCKET sock; int buffer_pos; //position in buffer con_mode::mode c_mode; //defines in which mode (recv/send) a socket works (for single-channel applications) //char* buffer; //for message from client USHORT con_port; int address_num; //address number in HOSTENT struct clock_t con_time; } async_connection; typedef struct port_range { USHORT from; USHORT to; bool error_flag; char* error_message; } port_range; typedef std::vector con_list; Другой сканер при тех же условиях устанавливал соединение на большее число портов.
Возможно, причина в том, что ваш сканер портов использует асинхронные сокеты, которые работают не блокирующим образом, а соединение устанавливается только на порт, который сразу доступен для подключения. Другой сканер, возможно, использует блокирующие сокеты, которые могут пытаться установить соединение на множество портов одновременно.
Вы можете попробовать изменить свой подход и использовать блокирующие сокеты или попробовать устанавливать соединение на разных портах параллельно для улучшения производительности сканера портов.
Возможно, причина в том, что ваш сканер портов использует асинхронные сокеты, которые работают не блокирующим образом, а соединение устанавливается только на порт, который сразу доступен для подключения. Другой сканер, возможно, использует блокирующие сокеты, которые могут пытаться установить соединение на множество портов одновременно.
Вы можете попробовать изменить свой подход и использовать блокирующие сокеты или попробовать устанавливать соединение на разных портах параллельно для улучшения производительности сканера портов.