所以我今天早上用 C++ 做了一个端口扫描器,它似乎工作得很好,只是有一个相当烦人的问题——每当我用它来扫描网络上的 IP 时,每个端口都需要 10-20 秒。
似乎 connect() 方法花了这么长时间。
现在除了多线程之外,我确信它会加快进程但不会加快多少,我怎样才能让它更快呢?这是执行扫描的代码部分:
for (i = 0; i < a_size(port_no); i++)
{
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
target.sin_family = AF_INET;
target.sin_port = htons(port_no[i]);
target.sin_addr.s_addr = inet_addr(argv[1]);
if (connect(sock, (SOCKADDR *)&target, sizeof(target)) != SOCKET_ERROR)
cout << "Port: " << port_no[i] << " - open" << endl;
else
cout << "Port: " << port_no[i] << " - closed" << endl;
closesocket(sock);
}
如果您需要更多,请告诉我。
哦,我也在使用 winsock2.h 文件。是不是因为这个才这么慢?