2012-03-12 7 views
0

私は2つのプログラムを作成し、送信するプログラムと受信するプログラムを作成しました。私は、大容量ファイルのデータをrecvをするためにそれを使用する場合は、ソケットはデータを送信しますが、recvプログラムはうまく動作しません。

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

それはいけない仕事少量のデータで、うまく機能: だから、

のrecvデータの部分があります。 私は問題がrecv部分であることを知っています。なぜなら、私がnetcatをrecvデータに使用すると、それはうまく動作し、データ全体をrecvするからです。 データを受け取る他の方法はありますか?

おかげ

+0

靴下とは何ですか?あなたが作成したソケットの抽象化ですか?どのように失敗していますか? – mfontanini

答えて

1

私はあなたのソケットがブロックしているとRCVBUFSIZEが送信されるバイトのためのrecvが待っていると思います。最初に送信されるファイルのサイズを送信し、受信したデータの数をカウントし、欠落しているものがRCVBUFSIZEバイト未満の場合にのみ残りの部分を要求する必要があります。

関連する問題