Linuxで簡単なCポートスキャナープログラムを作成しました。主なアルゴリズムは、connectを呼び出してみて、-1が返された場合は接続できませんでした。それ以外の場合は、ホストを接続しました。これは私のコンピューターでは正常に機能し、開いているポートが一覧表示されます。しかし、私の家には別のコンピューターがあり(私のルーターと同じルーターの後ろにあります)、IPを指定しましたが、プログラムがハングします。google.com、facebook.com、またはその他のWebサイトを試しましたが、最初のリクエストにも応答しません。私は何が間違っているのですか?
編集:
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);
}
}