書き込みはしないため、何かありましたらいってください。
現在サーバーをJava、クライアントをC,C++(DXライブラリを使用)で簡単なチャットソフトを作っているのですが、
通信データについてわからない点がありましたため、アドバイスなどいただけるとうれしいです。
C言語同士の場合、構造体をchar配列にし、先頭4バイトに命令文をつけて送受信していました。
Javaの場合、この構造体がそのまま利用できないため、テキストデータでのやり取りを行いました。
messageType,userName,chatString\n
このままでもよいのですが、直接バイナリデータなどで上記のようなやり取りはできませんでしょうか?
理想としては、C側はC同士の通信と同様に構造体をサーバーへ送信し、Javaは以下のような方法でそれを解析できるようになれば・・・と。
■クライアント側
#define HEADER_SIZE 4
struct ChatString {
[tab=30]char userName[16];
[tab=30]char chatString[64];
};
ChatString data;
strcpy_s(data.userName, sizeof(data.userName), "TEST");
strcpy_s(data.chatString, sizeof(data.chatString), "Hello World");
// 渡したデータの先頭にメッセージタイプをつけてサーバーへ送る関数
// 先頭に付与する以外はDxLibのNetWorkSendと同様です。
MySend(NetworkHandle, 10, (char *)&data, HEADER_SIZE + sizeof(data));