Я сделал простую программу C-сканера C в Linux. Основным алгоритмом является попытка вызова connect, если он возвращает -1, я не смог подключиться, иначе я подключил хост. Это отлично работает на моем компьютере, в нем перечислены мои открытые порты. Однако в моем доме есть еще один компьютер (за тем же маршрутизатором с моим), и я даю ему IP, но программа зависает. Я попробовал google.com, facebook.com или любой другой сайт, и они даже не отвечают на первый запрос. Что я делаю не так?Port Scanner в C++ Hangs
EDIT:
for(port=0; port<=65536; port++)
{
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr = *((struct in_addr *)he->h_addr);
memset(&(addr.sin_zero), '\0', 8);
if (connect(sockfd, (struct sockaddr *)&addr, sizeof(struct sockaddr)) == -1) {
printf("%i closed\n", port);
close(sockfd);
}
else {
printf("%i open\n", port);
close(sockfd);
}
}
Как я понимаю, почти невозможно сказать, не глядя на код. –
Вы пробовали подождать 60 секунд? Или независимо от значения тайм-аута по умолчанию? –
Кроме того, 'порт <65536'. –