2016-07-05 26 views
-1

私は以下のコードを持っています。私はqtのTCP IPを使用して構造を送信しようとしていますが、私はそれを行うことができません。構造を送るのを助けてください。 msgstr [0] = 0; msgstr [0]; msgstr;QtでTCP IPを使用して構造体を送信するには

msg.date = 27;

write(msg、len(msg))funtionを使用して送信します。しかし、この構造体をこのWrite関数に入れる方法。私は、TCP/IP用の組み込みQtネットワークライブラリを使用しています。

答えて

0

試してみてください。

QByteArray ba; 
ba << msg.messagedata << msg.date; 
socket.write (ba); 

これは単なるクライアントにQByteArrayを送り、あなたも(簡単なプロトコルを実装)のサイズを送信する必要があります。

1

QtのTCPを使用する場合は、QTcpSocketQTcpServerのクラスを使用できます。 QTcpSocketは、クラスを継承し、必要に応じてメソッドwriteを使用してソケットにデータを書き込みます。

あなた構造を送信するために、あなたはあなたの構造をパックすることができます:

socket->write(reinterpret_cast<char*>(yourMessage), sizeof(msg)); 

別の方法、あなたはQDataStreamのための演算子を実装することができます:

をこのように、

#pragma pack(push, 1) 
struct message 
{ 
    quint8 messagedata; 
    quint32 date; 
}msg; 
#pragma pack(pop) 

そしてwriteメソッドを使用します

QDataStream &operator<<(QDataStream &stream, const msg &m) 
{ 
    stream << m.messagedata; 
    stream << m.date; 
} 

このように使用してください:

QDataStream stream(socket); 
stream << yourMessage; 
+0

私はあなたのメッセージ変数に何を置く必要がありますか? –

+0

あなたのメッセージにあなたのデータを置くことができます。次に例を示します。msg yourMessage; yourMessage.messagedata = 30; yourMessage.date = 27; (あなたが疑問に思っているように) –

関連する問題