1

サーバーからデータを受信するためにQt上のクライアント用のプログラムを作成しましたが、データを受信せず、受信したバイトをゼロとして表示しています。次のプログラムは次のとおりです。

//client.h

#ifndef CLIENT_H
#define CLIENT_H

#include <QObject>
#include <QString>
#include <QtNetwork/QTcpSocket>

class Client: public QObject
{
Q_OBJECT
public:
  Client(QObject* parent = 0);
  ~Client();
  void start(QString address, quint16 port);
  void send(const char*);
  void receive();
public slots:
  void startTransfer();
private:
  QTcpSocket client;
};

#endif // CLIENT_H

//client.cpp

#include "client.h"
#include <QtNetwork/QHostAddress>
#include<QIODevice>

Client::Client(QObject* parent): QObject(parent)
{
    connect(&client, SIGNAL(connected()),
    this, SLOT(startTransfer()));

    //connect(&client, SIGNAL(waitForBytesWritten()),
    //        this, SLOT(receive()));
}

Client::~Client()
{
  client.close();
}

void Client::start(QString address, quint16 port)
{
  QHostAddress addr(address);
  client.connectToHost(addr, port);
}

void Client::startTransfer()
{
  client.write("Connection Established", 22);
}

void Client::send(const char *buffer)
{
    client.write(buffer,sizeof(buffer));
}

void Client::receive()
{
    char temp[1024] = {0};
    int len = client.read(temp,client.bytesAvailable());
    printf("\tData recieved from server :: %s\n",temp);
    printf("\tSize of data received is :: %d\n",client.bytesAvailable());
    printf("\tBytes read is :: %d\n",len);
}

//main.cpp

#include <QCoreApplication>
#include "client.h"
//#include <QApplication>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    Client client;
    client.start("192.168.1.2", 9602);

    char buff[] = "Send operation performed from main";
    client.send(buff);
   // while(1)
    client.receive();

    return a.exec();
}

ここで私のプログラム関数が実行され、受信が停止します(おそらく)、サーバーから何かを送信しても何もかかりません.何か提案はありますか?私は初心者なので、ばかげたプログラミングの間違いをしたとしても失礼にならないでください。

4

2 に答える 2

0

while(1) を使用してみて、その中に受信関数を書くことができます

于 2013-07-18T10:01:21.753 に答える
0

@ Merlin069の答えが得られません....シグナルの場所でreadyReadを使用し、スロットとして受信機能を使用する必要があります...うまくいくでしょう.この非常に簡単な言語が理解できることを願っています.

于 2013-07-18T11:18:48.413 に答える