• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Java(クライアント)とC言語(サーバ)間のソケット通信 文字列送受信の不具合)

JavaとC言語のソケット通信での文字列送受信不具合の原因と解決案

このQ&Aのポイント
  • JavaとC言語を使用したソケット通信のプログラムで、文字列の送受信時に問題が発生しています。
  • 送信された文字列の後ろに文字化けが発生し、またサーバプログラムの再起動時にエラーが発生します。
  • 問題の原因として、Javaのprintlnの自動改行の影響や文字列の長さの不一致が考えられます。解決案として、文字列の長さを正確に設定することや、文字化けを防ぐ対策を行うことが挙げられます。

質問者が選んだベストアンサー

  • ベストアンサー
  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.1

サーバ側のほうでbuf[]が初期化されてないからゴミがでるのは当然なんでは? あるいはターミネータ付けるとかしないと終わりが分からんと思いますが。 /* acceptしたソケットから受信 */ rc = recv(fd, buf, 256, 0); if(rc < 0){ printf("server:recv error.\n"); exit(rc); } else {   buf[rc] = 0 ;  } printf("server:recv %s.\n", buf);

yamaimoZ
質問者

お礼

ご回答ありがとうございます。 C言語クライアントを使ってのテストではゴミが出なかったので気にしていなかったのですが、bufの初期化をしたところゴミはでなくなりました。ありがとうございます。 しかし、bindエラーの方が以前直らないため、別項にて質問させて頂こうと思います。

関連するQ&A