【问题标题】:Client Server program in qtqt中的客户端服务器程序
【发布时间】:2015-12-05 06:21:53
【问题描述】:

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

【问题讨论】:

    标签: c++ qt


    【解决方案1】:

    我认为你应该看看来自Qt Docs 的 Forutne 客户端示例,并以此为基础编写代码。

    在您的代码中,您同时使用了 waitFor*() 中的阻塞函数和非阻塞信号/插槽(readyRead() 信号),强烈建议使用非阻塞方法(尤其是在代码在GUI 线程)。

    我也不确定你的函数尝试连接,它使用 newConnection() 信号,新连接甚至不是 QTcpSocket 的成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      相关资源
      最近更新 更多