1

だから私は今朝 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 ファイルを使用しています。こんなに遅いのはこのせいでしょうか?

4

3 に答える 3