エンコーダーを用いたUDP通信

解決


HIDEKI  2005-07-12 19:51:24  No: 16309  IP: [192.*.*.*]

バイナリコードでUDP通信をしたいのですが、

例えば
1バイト目に$11、2バイト目に$d0をTStreamにWriteBufferを用いて入れて
IdUDPServer.SendBuffer(TStream, 2)みたいにして送りたかったの
ですが、うまくできませんでした。なにかいい方法があれば教えてください

あと、別の方法として
IntToBinを用いてIntegerをバイナリの文字列にして、それを
エンコーダーを用いて送ってみようとしましたが、よく分かりませんでした
IdBase64Encoderを使うといいのかもしれませんが、そこら辺も分かる方
がいましたら教えてください。

編集    削除
Indyと秋の空  2005-07-12 22:59:13  No: 16310  IP: [192.*.*.*]

Indyはバージョンによって仕様が心変わりするので、
質問する時は Indyのバージョンを書かないとダメ。

TIdUDPBase.SendBufferメソッド
◆Indy9
procedure SendBuffer(AHost: string; const APort: Integer; var ABuffer; const AByteCount: Integer);
◆Indy10
procedure SendBuffer(AHost: string; const APort: Integer; const ABuffer: TIdBytes);

編集    削除
HIDEKI  2005-07-13 04:09:41  No: 16311  IP: [192.*.*.*]

お騒がせしましたが、解決しました。
エンコーダーがどうこうとかじゃなくて
もっと単純にできました。

例えば2バイト送る場合なら
var
  buf1 : Byte;
  buf2 : Byte;
  buf : Word;

  buf1 := $11;
  buf2 := $ff;
  buf := buf1 + buf2 * 256;
  IdUDPClient1.SendBuffer(buf, 2);

こんな感じです。

編集    削除