クライアントとサーバーがシリアル化されたオブジェクトを相互に渡すことができる双方向のクライアントサーバープログラムを実装しようとしています。私はこれをQt(QTcpSocketとQTcpServer)を使ってやろうとしています。私はこのようなプログラムをjavaで実装しましたが、Qtを使ってそれを行う方法を理解することはできません。私はfortune clientとfortune serverの例をチェックアウトしましたが、わかりましたが、クライアントは単にサーバーに信号を送るだけで、サーバーからデータが送信されます。クライアントとサーバーがオブジェクトを前後に送信する必要があります。私は完全な解決策を探していない、私が探しているのは正しい方向へのガイダンスです。QtcpSocketとQTcpServerを使用するQt双方向クライアントサーバー
私は、接続を受け付けるがデータを受け入れないコードを書きました。
サーバ
このクラスは、サーバーです。接続を受け入れ、送信されているバッファのサイズを出力する必要があります。しかし、それは0
#include "comms.h"
Comms::Comms(QString hostIP, quint16 hostPort)
{
server = new QTcpServer(this);
hostAddress.setAddress(hostIP);
this->hostPort = hostPort;
}
void Comms::attemptConnection(){
connect(server, SIGNAL(newConnection()), this, SLOT(connectionAccepted()));
//socket = server->nextPendingConnection();
server->listen(hostAddress,hostPort);
//receivedData = socket->readAll();
}
void Comms::connectionAccepted(){
qDebug()<<"Connected";
socket = new QTcpSocket(server->nextPendingConnection());
char* rec = new char[socket->readBufferSize()];
qDebug()<<socket->readBufferSize();
}
CLIENT
を出力している。このクラスは、クライアントです。それは文字列 'hello'を送信する必要があります。それは私が間違ってやっているものを私に教えて、または私がQtの中で何をしたいの確立の一般的なロジックを教えてください(私の知る限りでは)成功し
を送信します。
ありがとうございました。ありがとう、私はソケットを介してデータを送信できました。しかし、何らかの理由でまだバッファサイズが0になっています。どんな考え? – PTBG
ドキュメントから "0(既定値)の読み取りバッファサイズは、バッファにサイズ制限がないことを意味し、データが失われないことを保証します"。したがって、実際のコンテンツには何の示唆も与えません。 'socket-> size()'または 'socket-> bytesAvailable()'を使うべきです。 –