Почему сканер портов подключается всего к одному порту? Написал простой сканер портов на асинхронных сокетах. Соединение при сканировании 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;
Другой сканер при тех же условиях устанавливал соединение на большее число портов.

21 Авг 2019 в 06:48
152 +1
0
Ответы
1

Возможно, причина в том, что ваш сканер портов использует асинхронные сокеты, которые работают не блокирующим образом, а соединение устанавливается только на порт, который сразу доступен для подключения. Другой сканер, возможно, использует блокирующие сокеты, которые могут пытаться установить соединение на множество портов одновременно.

Вы можете попробовать изменить свой подход и использовать блокирующие сокеты или попробовать устанавливать соединение на разных портах параллельно для улучшения производительности сканера портов.

20 Апр в 13:13
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир