收发一段字符串
客户端:
procedure TForm1.Button1Click(Sender: TObject);
var str:string;
begin
  str:=Edit1.Text;
  IdUDPClient1.SendBuffer(str,length(str));
end;
服务端:OnUDPRead事件
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var str:string;
begin
  AData.ReadBuffer(str,AData.Size);//跟踪发现,事件能响应,但str总是没数据
  ListBox1.Items.Add(str);
end;点发送,接收总是报错,请教高手,原因

解决方案 »

  1.   

    //针对楼主的要求简单写了一个
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdUDPClient, IdBaseComponent, IdComponent, IdUDPBase,
      IdUDPServer, StdCtrls, IdSocketHandle;type
      TForm1 = class(TForm)
        IdUDPServer1: TIdUDPServer;
        IdUDPClient1: TIdUDPClient;
        cmdSend: TButton;
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure cmdSendClick(Sender: TObject);
        procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
          ABinding: TIdSocketHandle);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    self.IdUDPServer1.DefaultPort:=22222;
    self.IdUDPServer1.Active:=true;
    end;procedure TForm1.cmdSendClick(Sender: TObject);
    var
      s:string;
    begin
      s:=edit1.Text;
      self.IdUDPClient1.SendBuffer('127.0.0.1',22222,s[1],length(s));
    end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
    var
      strStream:TStringStream;
    begin
      strStream:= TStringStream.Create( '' );
      try
        strStream.CopyFrom( AData, AData.Size );
        ms.Position:=0;
        showmessage( strStream.DataString );
      finally
        strStream.Free;
      end;
    end;end.