掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TIdFTPServerで通信するには? (ID:3970)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>例えば、 > VStream := TFileStream.Create(ExtractFilePath(Application.ExeName) + AFileName, fmCreate); これをそのまま使用すると、カレントディレクトリにファイルが作成され、 『Connection Closed Gracefully.』の例外も発生しなくなりました。 あれからずっと、上記を応用してメモリ配列 GetData[1..100][0..999] of Byte; に、各クライアント(100台)から1秒ごとに送られてくる 1000バイトの固定データをメモリに取得しようとしていますが、 結局方法がわかりませんでした。 以下の方法でデータの受信ができる場合もあるが ほとんどが通信エラー状態(パケットモニターでは各コマンドでリトライが多くなっている)になって データを受け取ることができなくなります. 多分、考え方が間違っているのだと思います。よろしくお願いします. Type TGetStream = class(TMemoryStream) private McNum: Integer; public procedure BeforeDestruction; override; procedure SetPointer(Ptr: Pointer; Size: Longint); end; var GetData: array [0..999] of Byte; GetMemory: array [1..100, 0..999] of Byte; Stor イベント Wk_Stream := TGetStream.Create; Wk_Stream.McNum := McNum; Wk_Stream.SetPointer(@GetData, SizeOf(GetData)); VStream := Wk_Stream; procedure TGetStream.BeforeDestruction; var i: Integer; McNum: Integer; begin // 受け取ったデータの先頭4バイトはクライアントの管理番号が入っている // 本来なら、Wk_Stream.McNumを使用したいのだが... McNum := GetData[0] shl 24 + GetData[1] shl 16 + GetData[2] shl 8 + GetData[3]; if (McNum >= 1) and (McNum <= 100) then begin for i := 0 to 999 do GetMemory[McNum][i] := GetData[i]; end; inherited; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.