UDP転送をするには?

解決


アンボーイズ  2005-10-21 21:13:05  No: 18202

以下のサンプルでUDP送信をしました。
受信側でデータを参照すると文字列が受信されていません。
どうすればよいか、教えてください。
環境は、Delphi7, Indy9, WindowsXP です

≡≡≡≡  送信側  ≡≡≡≡
  UDPClient       := TIdUDPClient.Create(Nil);      //  UDPクライアントコンポーネント
  SendStringList  := TStringList.Create;        //  データ転送用文字列リスト
  SendStream      := TMemoryStream.Create;        //  データ転送用ストリーム
  try
    SendStringList.Clear;
    SendStringList.Add('Title');            //  ヘッダ情報
    SendStringList.Add(CommandTitle);          //  内容(タイトル)
    //  タイトル情報送信
    SendStream.Position := 0;
    SendStringList.SaveToStream(SendStream);
    SendStream.Position := 0;
    UDPClient.SendBuffer(SendStream, SendStream.Size);

≡≡≡≡  受信側  ≡≡≡≡
var
  GetStringList:    TStringList;

procedure TFormMain.IdUDPServerUDPRead(Sender: TObject; AData: TStream;  ABinding: TIdSocketHandle);
begin
  AData.Position := 0;
  GetStringList.LoadFromStream(TMemoryStream(AData));
  ShowMessage(GetStringList.Text);
end;


じょうほうふそく  2005-10-21 23:18:29  No: 18203

これだけじゃ、HOST、PORTがどうなってるか分からないね。


アンボーイズ  2005-10-21 23:31:54  No: 18204

自己処理ですみません。
わかりました。

UDPClient.SendBuffer(SendStream, SendStream.Size);

UDPClient.SendBuffer(SendStream.Memory^, SendStream.Size);

上記の場合はTMemoryStream のクラス自体の内容が送られるのですね。
って、ことは
クラスの内容を送ることができる?
クラスごと転送するにはどうすれば?

ま、目的達成したんで参考に教えてくれる人がいれば教えてください。

とりあえず、Stream の中身のデータの転送はできるようになりました。
ご迷惑おかけしてすみません。


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

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






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