バイナリ送受信の方法


  2002-10-25 02:40:07  No: 1799

Client,serversocketを使い、バイナリを送受信するプログラムを作っています。
バイナリは8KB位ずつに分けて送られてくるようなのですが、最後まで送られてきたかどうかを確かめるには、どうすれば良いでしょうか?
送られてきたものをまとめて、一気にFilestreamで保存したいのですが。


にしの  2002-10-25 03:33:41  No: 1800

C++Builderですが、
http://flex.ee.uec.ac.jp/japanese/riron/tool/builder5/scrncapt2/socket.html
にあるように、ファイルサイズを先に送っておくしかなさそうです。


  2002-10-29 02:36:28  No: 1801

返信遅れてすいません。
テキストファイルの保存は出来るようになりました。
しかし、他のファイルの保存が上手くいきません。
ファイルサイズを先に送信し、ファイルサイズと受信サイズを比べ、合っていたら保存するという風にしています。
テキスト以外のファイルの場合、
受信サイズ  106506
ファイルサイズ  483328
こんな感じになり、保存出来ません。


  2002-10-31 04:30:41  No: 1802

どうやら、36874バイトまでしか受信されないようです。
送信時はsendstreamを使い、下のように送信してます。
fs:=TFileStream.Create('c:\test.exe',fmOpenRead or fmShareDenyWrite);
socket.SendText(IntToStr(fs.size));
Socket.SendStream(fs);
socket.Close;
なぜ36KBまでしか受信出来ないのかわかる方いらっしゃいましたら、教えてください。
ちなみに、受信にはReceiveBufを使っています。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加