关于QTcpSocket 类的 disconnected()和 error()信号的问题,急!!!

caoying_0827 2009-03-26 03:40:32

各位大侠,帮帮忙 :

我在自定义类中定义了一个QTcpSocket成员,然后在类的构造函数中分别关联了QTcpSocket的connected()、disconnected()、error()信号到相应的槽,分别在disconnected()和error()关联的槽中执行了 connectToHost()命令,当我联上服务器断再断掉后为什么disconnected()相应槽的connectToHost()命令执行后QTcpSocket成员能得到connected()信号,而error()相应槽的connectToHost()命令执行后QTcpSocket成员却不能得到connected()信号呢?(附简易代码说明)

class TCP_Client : public QThread
{
Q_OBJECT
public:
.
.
.
private:
QTcpSocket m_socket;
public slots:
void ConnectSucceed();
void DestroyConnection();
};

TCP_Client::TCP_Client()
{
connect(&m_socket, SIGNAL(connected()), this, SLOT(ConnectSucceed()));
connect(&m_socket, SIGNAL(disconnected()), this, SLOT(DestroyConnection()));
// connect(&m_socket, SIGNAL(error(QAbstractSocket::SocketError socketError)), this, SLOT(DestroyConnection()));
}
.
.
.
void TCP_Client::ConnectSucceed()
{
emit CommunicationStateChanged(m_ObjectCar, TRUE);

return;
}

void TCP_Client::DestroyConnection()
{
m_socket.abort();
emit CommunicationStateChanged(m_ObjectCar, FALSE);

m_socket.connectToHost("192.168.1.1", 9998); //当第一次连接上服务器再断开后
//为什么通过disconnected()关联到该槽时,执行了这句后能进入ConnectSucceed()槽;
//而通过error()关联到该槽时,执行了这句后却不能进入ConnectSucceed()槽。

return;
}
...全文
418 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
还是这个问题?
DestroyConnection里面重现连接
connect(&m_socket, SIGNAL(connected()), this, SLOT(ConnectSucceed()));

看下啊。

你上次不是说没有返回error信号吗,那应该可以的
caoying_0827 2009-03-28
  • 打赏
  • 举报
回复
哎!!!

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧