问题描述
|
我正在尝试使用QTcpsocket和QTcpserver编写聊天。
我的几段代码
客户
ChatClient::ChatClient(QObject *parent)
: QObject(parent) {
connect(&tcpsocket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(error(QAbstractSocket::SocketError)));
connect(&tcpsocket,SIGNAL(connected()),SLOT(requestForID()));
connect(&tcpsocket,SIGNAL(readyRead()),SLOT(receiveMessage()));
tcpsocket.connectToHost(QHostAddress::LocalHost,PORT);
}
void ChatClient::requestForID() {
qDebug() << \"Connected,requesting for ID\";
QByteArray segment;
QDataStream out(segment);
out.setVersion(QDataStream::Qt_4_7);
out << (quint16)0 << ID;
out.device()->seek(0);
out << (quint16)(segment.size() - sizeof(quint16));
tcpsocket.write(segment);
}
void ChatClient::error(QAbstractSocket::SocketError error) {
qDebug() << \"Socket error\" << error;
}
服务器
ChatServer::ChatServer(QObject *parent)
: QObject(parent) {
if (!tcpserver.listen(QHostAddress::LocalHost,PORT)) {
qDebug() << \"Unable to start the server\"
<< tcpserver.errorString();
}
connect(&tcpserver,SIGNAL(newConnection()),SLOT(processConnection()));
}
客户端套接字永远不会连接。永远不会打印错误。
端口= 6178。
Runnig KUbuntu。从bash ping到localhost成功。
我究竟做错了什么?
解决方法
我看不到您的代码中的任何错误,您确定您的Qt和“网络”工作正常吗? Qt应该发出一个错误,但至少您的代码段对我来说是正确的。也许您的代码永远不会被调用,请向方法中添加一些调试消息。
最后,您可以构建Qt Network示例,并测试该示例是否在您的计算机上运行。如果没有这些示例,请在此处查看:http://doc.qt.io/qt-5/examples-network.html(Fortune Server / Client for TCP)