qt中的Client Server程序

时间:2015-12-05 06:21:54

标签: c++ qt

我是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();
}

1 个答案:

答案 0 :(得分:0)

我认为您应该查看来自Qt Docs的Forutne客户端示例,并将代码基于此。

在您的代码中,您正在使用waitFor *()和非阻塞信号/槽(readyRead()信号)中的两种阻塞函数,强烈建议使用非阻塞方法(特别是如果代码在GUI线程)。

另外我不确定你的函数attemptConnection,它使用newConnection()信号,new Connection甚至不是QTcpSocket的成员。