- 締切済み
送信したデータの一部が文字化けしちゃう
ソケット通信を利用してデータを送信した際に、 データの一部が文字化けしてしまって困っています。 Cのプログラム内でデータを作成し、 writeを使用してソケットディスクリプタに書き込んでます。 デーモンを介してJavaのプログラムに送信しているのですが、 writeする直前では正常なデータなのに、 Java側で受信すると一部の文字が化けてしまうことがあります。 原因とかぜんぜんわからなくて、かなり困ってるのですが、 わかる方いらっしゃいましたら教えてくださぁ~~~いっ! お願いします!!! ちなみに、送信しているデータは構造体です。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- zerosix
- ベストアンサー率31% (47/149)
回答No.1
あまりに抽象的すぎます。 どのようなデータを送信して、どのような結果が得られて、どこかまずいのか。 また、送受信するソースコードはどのように書いているのか、 それくらいは質問する際に記述すべきです。
補足
ごめんなさい。こうゆーの使うの初めてなので なんて書いたらいいのかわからなかったです。 送信するデータは ”茨城支店サーバ\a神奈川支店サーバ\a東京支店サーバ\a・・・” とゆー感じで、\aで区切られたデータがいくつか連なっています。 このデータをwriteを使用して 下記のようにソケットディスクリプタに書き込んでます。 memset(ret_data1.req_data,'\0',WORKSIZE - sizeof(long) * 2); memcpy(ret_data1.req_data,send_data->req_data,size); ret_size = write(sock_d,(char *)&ret_data1,WORKSIZE); if(ret_size < 0) { return NG; } 上記のsend_data->req_dataにデータが格納されてます。 このようにしてデータを送信したときに、 Javaの方で受信すると、複数あるデータの一部 (例えば、”神奈川支店サーバ”だけとか)が 文字化けしてしまいます。 Java側では受信するデータの数を想定していて、 文字化けにより、二つのデータが一つになってしまい、 データ数が一致しないため、エラーと判断されます。 Java側の受信しているソースがわからないので、 どのようにして受け取っているのかがわかりません。 コレだけじゃわからない・・・ですよね。。。