我是Qt的新手,我想写一个简单的客户端服务器程序,客户端向服务器发送消息,服务器获取它并将其发送回客户端。我写了服务器程序,但我在客户端有问题而且我不喜欢我不知道该怎么写。请你帮助我好吗? 这是我的客户代码:
#include "myclient.h"
#include "QTcpsocket"
#include "QTcpServer"
#include "mainwindow.h"
Client::Client(QObject* parent): QObject(parent)
{
connect(&client, SIGNAL(connected()),this, SLOT(sendData()),Qt::DirectConnection);
}
void myclient::attemptConnection()
{
connect(QTcpSocket, SIGNAL(newConnection()), this, SLOT(connectionAccepted()));
if(QTcpSocket->listen("127.0.0.1",1234))
{
qDebug() << "Server listening";
}
else
{
qDebug() << "Couldn't listen to port" << server->serverPort() << ":" << server->errorString();
}
}
void myclient::connect()
{
QTcpSocket->connectToHost(LocalHost,1234,QIODevice::ReadWrite);
if(QTcpSocket->waitForConnected())
{
QString string = "Hello";
QByteArray array;
array.append(string);
qDebug()<<QTcpSocket->write(array);
}
else
{
qDebug() << "couldn't connect";
}
}
QTcpSocket socket;
void myclient::connectionAccepted()
{
qDebug()<<"Connected";
connect(socket, SIGNAL(readyRead()), this, SLOT(readSocket()));
}
void myclient::readSocket()
{
qDebug()<<socket->readBufferSize();
QByteArray = socket->readAll();
}
答案 0 :(得分:0)
我认为您应该查看来自Qt Docs的Forutne客户端示例,并将代码基于此。
在您的代码中,您正在使用waitFor *()和非阻塞信号/槽(readyRead()信号)中的两种阻塞函数,强烈建议使用非阻塞方法(特别是如果代码在GUI线程)。
另外我不确定你的函数attemptConnection,它使用newConnection()信号,new Connection甚至不是QTcpSocket的成员。