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;
AData: TStream,这个参数,你可以用Stream的写缓冲区方法把数据写到数组中
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;是这样写吗?好像不大对
花了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;
谢谢!!
我要IdUDPClient1不好意思
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.
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;
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;是这样写吗?好像不大对
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;