Red Hat 5 を実行している VM で、bash で次の行を実行します。
for i in {1..100000};
do telnet 10.10.10.105 41941;
done
ある時点で、リッスンしている人がいないにもかかわらず、telnet がポートに接続します。それは自分自身に接続しているようですか?サーバーを起動せずにアプリケーションのクライアント側を起動すると、同じ問題が発生します。クライアントは正常に ip:port に接続します。クライアントは次のようになります。
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(port));
addr.sin_addr.s_addr = inet_addr(hostname);
some_while_loop
{
status = ::connect(sock, (sockaddr *)&addr, sizeof(addr));
if (status == -1)
{
shutdown(sock, 2);
close(sock);
return false;
}
}
この記事を見つけました: http://web.deu.edu.tr/doc/soket/ 6.2 では、実行中の同じマシンに接続すると接続が成功すると述べています。私の質問は、なぜこれが起こっているのですか?それはハードウェアの問題ですか、それともフェイルセーフのレッドハットカーネルが使用しているのですか、それとも私が使用しているポートが原因である可能性があります (たとえば、1025 の場合、この問題はありません)...?