【发布时间】:2016-07-07 20:30:45
【问题描述】:
我有一个程序(客户端)需要连接到另一台机器(服务器)。
问题是,我不知道我应该连接到什么 IP 以及我应该转发什么端口。这既适用于服务器,也适用于客户端。
假设我使用端口1234进行测试。
在我的服务器中,我有以下代码:
MyServer.cpp
QString MyServer::StartServer()
{
QHostAddress ipAddress;
QList<QHostAddress> ipAddressList = QNetworkInterface::allAddresses();
for(int i=0;i<ipAddressList.size();i++)
{
if(ipAddressList.at(i) != QHostAddress::LocalHost &&
ipAddressList.at(i).toIPv4Address())
{
ipAddress = ipAddressList.at(i);
break;
}
}
if(ipAddressList.isEmpty())
ipAddress = QHostAddress(QHostAddress::LocalHost);
if(listen(ipAddress,1234))
{
qDebug() << this->serverAddress().toString();
qDebug() << this->serverPort();
return QString("Server online!");
}
else
return QString("Error!");
}
在我进行的测试中,IP 将始终是我的内部 IP (192.168.25.208)。但是,在我的客户端程序中,我永远不知道要连接什么 IP。
这是我的客户端代码:
MyClient.cpp
void Pesquisa::ConnectConfig()
{
socket = new QTcpSocket(this);
connect(socket,SIGNAL(connected()),this,SLOT(Connected()));
connect(socket,SIGNAL(disconnected()),this,SLOT(Disconnected()));
//What IP should I use here?
socket->connectToHost("192.168.25.208",1234);
}
我应该连接到服务器正在运行的内部 IP 吗?机器(服务器)的外部IP?另外,如果我需要使用我的外部 IP.... 它是动态的,所以这是一个问题。
【问题讨论】:
-
我想我“找到了方法”!我将使用“no-IP”并尝试在软件中使用它的主机名。也许它会起作用。我会带着结果回来的。
标签: c++ qt networking qt5 qtcpsocket