0

我是网络编程的新手,所以我不确定这是否真的是正确的问题,但我想用 C++ 制作一个服务器程序(我正在使用 Qt。)我使用了“财富服务器”示例创建一个简单的服务器,您可以通过输入服务器显示的 IP 地址与客户端连接。如果我输入 localhost (127.0.0.1) 我可以连接,但是服务器说它正在运行的地址是 169.254.253.67,我发现这是另一个本地地址(我也无法连接到它。)我运行服务器,所以它不在本地地址上?

这是我使用的示例:http: //doc.qt.digia.com/qt/network-fortuneserver.html

4

1 回答 1

1

服务器实现获取所有发现的 ip 地址的列表,然后找到第一个非本地 ip。否则,它默认使用 localhost。如果您看到本地主机地址,则表明您的网络中未正确设置某些内容,并且 Qt 无法确定 LAN ip。

正如@drescherjm 在评论中所建议的那样,您可以通过0.0.0.0. 要查看此操作,您只需在使用ipAddress字符串设置状态标签之前添加一行:

// add this to force the socket to listen on all interfaces
ipAddress = QHostAddress("0.0.0.0").toString();
// or if you have a local static ip and want to be explicit
// ipAddress = QHostAddress("192.168.xxx.xxx").toString();

// followed by the already existing line for setting the text
statusLabel->setText(tr("The server is running on\n\nIP: %1\nport: %2\n\n"
                        "Run the Fortune Client example now.")
                     .arg(ipAddress).arg(tcpServer->serverPort()));

现在,如果您的网络设置正确,任何其他可以看到运行服务器应用程序的计算机都应该能够在给定端口上连接。

于 2013-01-08T01:12:32.163 回答