我在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时......它不是