TClientSocket.Socket.SendStream()へ渡す,TStreamのインスタンス
このインスタンス,解放動作はいらない模様
ヘルプにきっちり書いてあったり
-
注意 パラメータとして SendStream に渡されるストリームは,Windowsソケットオブジェクトの所有になります。Windowsソケットオブジェクトは,ストリーム処理を終了すると,ストリームを解放します。したがって,パラメータとして渡しても,解放しないでください。
なして,送信したとたん落ちるのか,小一時間ほど,ずっと悩んでた
メモリリークのチェッカも走らせて確認しましたが
リークは確認されませんでした
念のため,サンプルコード,書いておきますわん
DELPHI:
- //**********************************************
- //ファイル送信の主処理
- //
- //**********************************************
- function TSocketIO.SendFile : boolean;
- var
- sftm : TFileStream;
- begin
- if (FileExists(FXMLFileName) = false) then //ファイルが見つからない場合
- begin
- FError := soceFileNotFound;
- Result := false;
- exit;
- end;
- sftm := TFileStream.Create(FXMLFileName, fmOpenRead); //XMLファイルを開く
- try
- FClientSocket.Socket.SendStream(sftm); //ソケットで送信
- finally
- //sftm.Free; //ストリームを解放 <--これ,いらない模様
- end;
- FError := soceNon;
- result := true;
- end;


