谁能给我个简单的例子  
delphi接受UDP数据包的  要接收数组的
最好是用 IdTCPserver1的
最好还有发送的部分
本人菜鸟,谢谢各位了!!

解决方案 »

  1.   

    http://download.csdn.net/source/1125383
      

  2.   

    楼上给的是TCP的吧   我要UDP的  
    谢谢!!
      

  3.   

    对不起我写错了 
    我要IdUDPClient1不好意思
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, IdUDPClient, IdBaseComponent, IdComponent, IdUDPBase,
      IdUDPServer, StdCtrls,IdSocketHandle;type
      TForm1 = class(TForm)
        Button1: TButton;
        IdUDPServer1: TIdUDPServer;
        IdUDPClient1: TIdUDPClient;
        Memo1: TMemo;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(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:=1984;
    self.IdUDPServer1.Active:= true;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
    self.IdUDPClient1.Send('127.0.0.1',1984,'fdsafdsa');
    end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
    var
      sStream: TStringStream;
    begin
      sStream:= TStringStream.Create('');
      try
      sStream.CopyFrom(AData,AData.Size);
      Memo1.Lines.Add(sStream.DataString);
      finally
      sStream.Free;
      end;
    end;end.
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      a:array[0..1] of char;
    begin
      a[0]:='A';
      a[1]:='B';
      self.IdUDPClient1.SendBuffer('127.0.0.1',1984,a,sizeof(a));
    end;
      

  6.   

     AData: TStream,这个参数,你可以用Stream的写缓冲区方法把数据写到数组中
      

  7.   

    procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);var
      sStream: TStringStream;
      a:array[0..1] of char;
      i:integer;
    begin
      sStream:= TStringStream.Create('');
      try
      sStream.CopyFrom(AData,AData.Size);
      adata.Read(a,2);
       for i:=0 to 1 do
      memo1.Text:=memo1.Text+a[i];
      finally
      sStream.Free;
      end;end;是这样写吗?好像不大对
      

  8.   

    花了5分钟给楼主写了个DEMO// 客户端
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Test: array[0..16] of Byte;
      I: Integer;
    begin
      for I := Low(Test) to High(Test) do
        Test[I] := I;  Self.IdUDPClient1.Host := '127.0.0.1';
      IdUDPClient1.Port := 8888;
      IdUDPClient1.SendBuffer(Test, Length(Test));
    end;// 服务端procedure TForm1.FormCreate(Sender: TObject);
    begin
      IdUDPServer1.DefaultPort := 8888;
      IdUDPServer1.Active := True;
    end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
    var
      Test: array[0..16] of Byte;
      I: Integer;
    begin
      AData.Read(Test, Length(Test));  for I := Low(Test) to High(Test) do
      begin
        Test[I] := High(Test) - I;
        ShowMessage(IntToStr(Test[I]));
      end;
    end;
      

  9.   

    INDY自带的DEMO就有,仔细研究一下。