最新の更新情報

2012年5月
« 4月    
 12345
6789101112
13141516171819
20212223242526
2728293031  

本ブログのURL

qrcode.png

お天気

 
このブログ「吟遊詩人の戯言」 の記事検索...

TClientSocket.Socket.SendStream()へのストリーム


キーワード(クリックで関連記事が読めます) → ,

関連記事



 
 

TClientSocket.Socket.SendStream()へ渡す,TStreamのインスタンス

このインスタンス,解放動作はいらない模様

ヘルプにきっちり書いてあったり

    注意 パラメータとして SendStream に渡されるストリームは,Windowsソケットオブジェクトの所有になります。Windowsソケットオブジェクトは,ストリーム処理を終了すると,ストリームを解放します。したがって,パラメータとして渡しても,解放しないでください。


なして,送信したとたん落ちるのか,小一時間ほど,ずっと悩んでた
メモリリークのチェッカも走らせて確認しましたが
リークは確認されませんでした

念のため,サンプルコード,書いておきますわん

DELPHI:
  1. //**********************************************
  2. //ファイル送信の主処理
  3. //
  4. //**********************************************
  5. function TSocketIO.SendFile : boolean;
  6. var
  7.     sftm : TFileStream;
  8. begin
  9.  
  10.     if (FileExists(FXMLFileName) = false) then       //ファイルが見つからない場合
  11.     begin
  12.         FError := soceFileNotFound;
  13.         Result := false;
  14.         exit;
  15.     end;
  16.  
  17.     sftm := TFileStream.Create(FXMLFileName, fmOpenRead);          //XMLファイルを開く
  18.     try
  19.         FClientSocket.Socket.SendStream(sftm);                      //ソケットで送信
  20.     finally
  21.         //sftm.Free;          //ストリームを解放  <--これ,いらない模様
  22.     end;
  23.  
  24.     FError := soceNon;
  25.     result := true;
  26. end;

 
 
 
 

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">