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