网络简单网络连接的简单Qt代码
问题描述:
我在使用QtNetwork连接计算机方面是全新的。网络简单网络连接的简单Qt代码
现在我只想看到一个连接的尝试。所以,我创建了一个GUI应用程序并在mainwindow.cpp我写这两个功能插槽,两个按钮:
void MainWindow::on_pbTalk_clicked(){
QString IP = ui->leIP->text();
ui->pteLog->appendPlainText("Now Talking to IP: " + IP);
talker = new Talker();
talker->connectToHost(IP,25000);
}
void MainWindow::on_pbListen_clicked(){
ui->pteLog->appendPlainText("Now listening on any port, I think");
listener = new Listener(this);
if (!connect(listener, SIGNAL(newConnection()), this, SLOT(on_newConnections()))){
ui->pteLog->appendPlainText("The connection of slot and signal failed!");
}
}
现在发话本质上是一个与QTcpSocket没有什么重新实现了,只是还没有。
监听器是用下面的代码CON Listener.cpp一个QTcpServer既可:
Listener::Listener(QObject *parent) :
QTcpServer(parent)
{
qDebug() << "Listening on any port";
listen(QHostAddress::Any);
}
void Listener::incomingConnection(int socketDescriptor){
qDebug() << "New connection: " << socketDescriptor;
}
于是我运行同一程序的两个实例。一个在我的机器中。我运行该程序并按下Listen按钮(IP 10.255.255.101)。
第二个实例在虚拟机(IP 10.255.255.215)中运行,我运行程序并按下Talk按钮。这,据我所知应该试图打开一个连接到IP(这是10.255.255.101)在端口25000,我应该得到一个“新连接”消息在控制台。但是没有这样的消息出现。由于这不起作用,我没有继续前进。
任何人都可以告诉我我可能会做错什么吗?
答
检查的QTcpServer::listen
的documenation - 它说:
通知服务器侦听地址地址 和端口端口传入的连接。如果端口是0,则自动选择一个端口。如果 地址是QHostAddress :: Any,服务器将监听所有网络的接口 。
QHostAddress::Any
表示您正在监听所有网络接口,而不监听端口。 (例如,如果你想只有一个本地服务器,您可以使用QHostAddress::LocalHost
- 检查QHostAddress::SpecialAddress的更像是
如果你想手动设置端口,你必须调用:
listen(QHostAddress::Any, 25000);
如果没有,你可以通过调用
quint16 port = serverPort();
消息(我在控制台上写的文本)是错误的,没有意识到。并且因为我正在跟踪一个没有使用端口的例子....错误。它现在有效。我不喜欢阅读文档。非常感谢你。 – aarelovich