• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:TCP/IP Soket 通信)

TCP/IP Socket通信での要件と問題

このQ&Aのポイント
  • TCP/IP Socket通信において、サーバとクライアントが互いにデータを送受信する際に問題が発生しています。
  • サーバ側はmsg_numを正しく受信し表示できますが、msg_fileを受信できずに待機状態になってしまいます。
  • この問題の解決方法について教えてください。

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

  • ベストアンサー
  • yasuch
  • ベストアンサー率41% (27/65)
回答No.3

たとえば、 クライアントは、送信するデータのサイズ(文字列長)をint型で送信してから実際の文字列を送信する。 サーバは、4バイト(int型)だけ読み込み、何文字送られて くるか調べてから、次にそのサイズだけ読み込む。 といった感じにしたりします。 それか、1バイトずつ読み込んで '\0' が来るまで ループさせるとかでしょうか。

その他の回答 (2)

  • chirubou
  • ベストアンサー率37% (189/502)
回答No.2

Unix/Linux (Solaris ?) ですよね? 多くの人が間違えるんですが、ソケットからの読み込みは、指定したサイズ分読めるとは「限らない」、つまり sizeof(msg_file) を指定しても、その半分しか読めていない可能性もあります。困ったことに、これは OS の都合で、今まで読めた分を返してきますので、最初はうまく動いていたけでも、後で動かなくなった、という状況になります。 ですからサーバ側の read はループにして、欲しいサイズまで読み込むようにしなければなりません。

  • yasuch
  • ベストアンサー率41% (27/65)
回答No.1

最初の read 文で msg_num と msg_file の両方を 読み込んだのではないでしょうか。 str_lenの長さを確認してみては?

UltraLEE
質問者

お礼

ご回答、ありがとうございます。その通りでした。 他にいい方法がありましたら、教えてください。よろしくお願いします。

関連するQ&A