以下のサンプルで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;
これだけじゃ、HOST、PORTがどうなってるか分からないね。
自己処理ですみません。
わかりました。
UDPClient.SendBuffer(SendStream, SendStream.Size);
↓
UDPClient.SendBuffer(SendStream.Memory^, SendStream.Size);
上記の場合はTMemoryStream のクラス自体の内容が送られるのですね。
って、ことは
クラスの内容を送ることができる?
クラスごと転送するにはどうすれば?
ま、目的達成したんで参考に教えてくれる人がいれば教えてください。
とりあえず、Stream の中身のデータの転送はできるようになりました。
ご迷惑おかけしてすみません。
ツイート | ![]() |