首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过QTcpServer连接2台机器

如何通过QTcpServer连接2台机器
EN

Stack Overflow用户
提问于 2016-07-07 20:30:45
回答 1查看 1.2K关注 0票数 1

我有一个程序(客户端),需要连接到另一台机器(服务器)。

问题是,我不知道我应该连接到哪个IP,我应该使用哪个端口。这既适用于服务器,也适用于客户机。

假设我正在使用端口1234进行测试。

在我的服务器中,我有以下代码:

MyServer.cpp

代码语言:javascript
复制
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

代码语言:javascript
复制
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..。它是动态的,所以这是一个问题。

EN

回答 1

Stack Overflow用户

发布于 2016-07-07 20:39:39

我认为问题不在代码本身。

如果您想测试您的程序,同时在您的机器上运行服务器和客户端,请让服务器侦听所有地址(但我不知道您为什么不允许您的服务器代码中的本地主机)和客户机连接到localhost (127.0.0.1)。

要让服务器侦听所有地址,我使用:

代码语言:javascript
复制
server->listen (QHostAddress::AnyIPv4, 1234);

无论如何,如果您想从另一台计算机连接到服务器,当然您必须使用服务器PC的外部IP。

但要做到这一点,你需要一个静态IP。通常,你可以向你的互联网提供商要一个静态的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38254725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档