0

データを送信するプログラムと受信するプログラムの 2 つのプログラムを作成しました。そう、

データを受信する部分は次のとおりです。

while ((recvMsgSize = sock->recv(echoBuffer, RCVBUFSIZE))>0) {
   write(fileno(stdout), echoBuffer, recvMsgSize);
}

大きなファイルデータを受信するために使用すると、うまく機能しますが、少量のデータでは機能しません。問題がrecv部分にあることはわかっています。なぜなら、netcatを使用してデータをrecvするとうまく機能し、データ全体をrecvするからです。データを受け取る他の方法はありますか?

ありがとう

4

1 に答える 1

1

ソケットがブロックされており、recvがRCVBUFSIZEバイトの送信を待機していると思います。最初に送信されるファイルのサイズを送信してから、受信したデータの量をカウントし、不足しているものがRCVBUFSIZEバイト未満の場合にのみ残りの部分を要求する必要があります。

于 2012-03-12T17:38:31.873 に答える