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

解決


HIDEKI  2005-07-12 19:51:24  No: 16309

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

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

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


Indyと秋の空  2005-07-12 22:59:13  No: 16310

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

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

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

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

こんな感じです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加