IndyからTMemoryStreamを送信する最善の方法は何ですか?IndyとTStreams
procedure TClientForm.IdTCPClient1Connected(Sender: TObject);
begin
IdTCPClient1.IOHandler.Write(KStore.Size);
KStore.Position := 0;
IdTCPClient1.IOHandler.Write(KStore);
Memo1.Lines.Add('Client connected with server');
end
とサーバ側では:
function MemoryStreamToString(M: TMemoryStream): string;
begin
SetString(Result, PChar(M.Memory), M.Size div SizeOf(Char));
end;
procedure TClientForm.IdTCPServer1Connect(AContext: TIdContext);
var
LStore: TMemoryStream;
Size: Int64;
LStore := TMemoryStream.Create;
LStore.Position := 0;
Size := AContext.Connection.IOHandler.ReadInt64();
AContext.Connection.IOHandler.ReadStream(LStore,Size);
end;
しかし、もう一方の端にエラーがないこと、にも関わらず、文字列関数にそのメモリストリームを使用して、私がしようとしている瞬間に
ちょうど????????????????????を返す私はそれを保存しているテキストファイルで。
送信する最も良い方法は、HTTPサーバーが期待する方法で送信することです。サーバーはそれをどのように期待していますか? –
?申し訳ありませんが、私はあなたが何を意味するか完全には分かりません。 –
サーバーがストリームデータを受信する方法を教えてください。つまり、サーバーはPOSTメソッドまたはGETメソッドを期待していますか?特別なパラメータまたはフィールド名で指定しますか? –