0
我在Linux中製作了一個簡單的C端口掃描程序。主要算法是嘗試調用連接,如果它返回-1,我無法連接,否則我連接主機。這在我的電腦中工作正常,它列出了我的開放端口。然而,在我家裏還有另一臺電腦(與我的路由器相同),我給它的IP但程序掛起。我試過google.com,facebook.com或任何其他網站,他們甚至不響應第一個請求。我究竟做錯了什麼?C++中的端口掃描程序掛起
編輯:
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'。 –