0

Indyコンポーネントでバイナリデータを送信するにはどうすればよいですか?このタスクに最も適しているのはどれですか?使ってみましたTIdTcpClientが、文字列しか送れません。

ここでその問題に対する1つの応答を見つけましたが、わかりません。方法については書いてWrite(TIdBytes)ありますが、答えはわかりません。彼は、のインスタンスに書き込むことを意味し、TIdBytesそのインスタンスをどのように接続するかを意味しますTIdTcpClientか?

助けてくれてありがとう。

4

2 に答える 2

4

あなたが引用したページは、メッセージをうまく再現していません。レミーが実際に書いたものは次のとおりです。

SendCmd() は、テキスト コマンド/パラメータ専用に設計されています。SendCmd() が終了した後にバイナリ データを送信する必要があり、サーバーはクライアントに応答を返した後にバイナリ データを読み取る必要があります。例えば:

- - クライアント - -

begin
  IdTCPClient1.SendCmd('DoIt', 200);
  // send binary data, such as with Write(TStream) or Write(TIdBytes)...
end;

Write彼が話していたメソッドは、TIdIOHandlerクラスのメンバーです。あなたのTIdTCPConnectionオブジェクトはそのIOHandlerプロパティにそのクラスのインスタンスを持っています。実際、それはSendCmd関数がその文字列を送信するために使用するものです。

この表記は、入力にパラメーターを受け入れるメソッドWrite(TIdBytes)を使用することを意味します。WriteTIdBytes

Writeバイナリ データが既にストリームまたはバイトの動的配列にある場合は、それらのいずれかをメソッドに直接渡すことができます。WriteFileファイルの名前を指定すると、外部ファイル全体を送信するメソッドもあります。ストリーム バージョンを使用する場合は、ストリームの長さを自動的に含めるオプションがあります。

これらの構造のいずれかにまだデータがない場合は、Writeさまざまなサイズの整数型を受け入れるメソッドを使用してデータを断片的に書き込むか、データを にコピーしてTMemoryStreamから に渡すことができますWrite

于 2010-06-02T10:07:10.563 に答える
0

Write は、TCPClient のメソッド(または Delphi で呼び出されるもの)です。やりたいことの作業コードは次のとおりです: http://delphi.about.com/od/internetintranet/l/aa012004a.htm。すぐに起動して実行できるはずです:)

于 2010-06-02T09:57:16.027 に答える