我在运行 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,我没有这个问题)......?