使用QTCPSocket连接主机的正确方法

时间:2018-06-06 17:02:40

标签: qt sockets networking tcpclient

我在QTCPSocket上遇到了一些网络问题。我相信它是在一些网络架构中,但无法找到现场。 所以,我有一个静态IP地址。假设它是xx.xxx.xx.xx 在我的地方我有路由器(WS319),我已经打开了端口(5555)。 我已经通过在线系统检查过这个端口是否被彻底打开了。

现在,我有服务器部分,它可以正常工作。我是这么认为的,因为通过在线工具检查端口时我可以看到服务器的反应。 所以,服务器就是......

mTcpServer = new QTcpServer(this);
connect(mTcpServer, &QTcpServer::newConnection, this, &MyTcpServer::slotNewConnection);
if(!mTcpServer->listen(QHostAddress::Any, 5555)){
    qDebug() << "server is not started";
} else {
    qDebug() << "server is started";
}

客户:

_pSocket = new QTcpSocket( this ); 
connect( _pSocket, SIGNAL(readyRead()), SLOT(readTcpData()) );
qDebug()<<"trying to connect..";
_pSocket->connectToHost(QHostAddress("xx.xxx.xx.xx"), 5555);
if( _pSocket->waitForConnected() ) {
    qDebug()<<"Connected";
    qDebug()<<"opening file...in "<<QDir::currentPath();
    QFile *f = new QFile("osc.dat");
    sendFile(f);
}else{
    qDebug()<<"Can't connect to server, error:";
    qDebug()<<_pSocket->error();
}

过了一段时间后我得到了

trying to connect..
Can't connect to server, error:
QAbstractSocket::SocketTimeoutError

我认为问题在于地址重定向。但是在我的路由器上,我已经完成了从5555端口转发到我当地的PC地址。

有人可以帮忙吗?我知道这里有一些小东西但是看不到它。

P.S。 everthing与localhost配合得很好,但是当转移到真正的ip时......它不是

0 个答案:

没有答案