質問: recv(s, (char*)&buf, 1024, 0); if(nRcv<=0) { break; } os.write((char*)buf,nRcv); } os.close(); 何度か実行してみると、受信サイズが送信サイズが少ないことがあり、一回ごとの受信パケットを見てみるとパケットをロスしているような場所(受信サイズが1バイト)があります。 ちなみにデバッグモードの時はあまり起こりませんが、通常実行時は頻繁に発生します。 試しに送信側の snd=send(s,(char*)&szBuf,rtn,0); の後に Sleep(1); と入れてみると、デバッグモードでも通常実行時でも(今のところは)受信の不足がなくなりました。 フィルタリングソフトで細かいことは見ていないのですが、プログラムに問題、あるいは心当たりがある方はご教示願います。
回答: > 一回ごとの受信パケットを見てみるとパケットを > ロスしているような場所(受信サイズが1バイト)があります。 とありますが、1バイトだからロスしているということは 無いと思います。大げさな話、1024バイト送信ても、 1バイトが1024回という可能性だってあるわけですから。 問題とされている部分がよく理解できないので、 本当にエラーが起こっているのかも怪しいです。 結局のところどのような結果を期待していて、 現在はどのように動作しているのでしょうか? 実は送信側でファイル読み込み時に終端を読み取って、 0が帰ってきているということはありませんか? >rtn=_read(read_fd,szBuf,1024); >if(rtn<=0)break;