我正在尝试创建一个应该连接到C服务器的客户端。我必须使用TCP。我已经拥有一个完全练功的服务器,但我无法连接我的客户端。我不想向服务器发送任何数据(此时)。我只是想建立一个连接并打开一个新的对话框。

以下是void登录中的代码:: on_pushbutton_clicked()插槽。 //按钮是我的登录按钮

pSocket = new QTcpSocket (this);
connect (pSocket, SIGNAL(readyRead()), SLOT(waitNextStep()));
pSocket->connectToHost(ui->lineEdit->text(), ui->lineEdit_2->text().toInt());
if(pSocket->waitForConnected())
{
    Menu mMenu;
    mMenu.setModal(true);
    mMenu.exec();
}
else
{
    QMessageBox::critical(this,tr("Error"),tr("Error at Connect"));
}
.

我已经定义了菜单类,我知道它是功能的,因为我在没有连接部分的情况下测试它。来自Lineedits的IP取出部分也是有用的。 psocket在登录类中声明,作为私有成员(qtcpsocket * psocket;)。

不幸的是,我是Qt的新手,我真的不知道'waitnextstep()'函数应该是什么。我只是做了一个返回1;我不确定连接功能中的插槽,因为我注意到许多例子中存在不同的功能。

如果我运行程序,我没有错误,程序执行正常。但是当我点击登录按钮时,对话框冻结〜15秒 - 它没有响应。之后,我得到了“连接”消息的“错误”。任何帮助都感激不尽。

有帮助吗?

解决方案

不幸的是,我是Qt的新手,我真的不知道'waitnextstep()'函数应该是什么。我只是做了一个返回1;我不确定连接功能中的插槽,因为我注意到许多例子中存在不同的功能。

它高度取决于您的用例,但这通常是传入数据的处理程序,无论您希望如何处理它,可能包括您只需将其存储在成员变量中。

如果我运行程序,我没有错误,程序执行正常。但是当我点击登录按钮时,对话框冻结〜15秒 - 它没有响应。之后,我得到了“连接”消息的“错误”。任何帮助都感激不尽。

是因为世代odicetagcode是异步Qt操作的阻塞(即sync)使用。我建议做的是,根据文档

void qabstractsocket :: connected()[信号]

此信号在调用ConnectTohost()之后发出,并已成功建立连接。

注意:在某些操作系统上,可以从ConnectTohost()呼叫直接发射连接的()信号,以便与localhost连接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top