读书人

delphi接受UDP数据包,该如何解决

发布时间: 2012-02-08 19:52:21 作者: rapoo

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

[解决办法]
http://download.csdn.net/source/1125383
[解决办法]

Delphi(Pascal) code
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);beginself.IdUDPServer1.DefaultPort:=1984;self.IdUDPServer1.Active:= true;end;procedure TForm1.Button1Click(Sender: TObject);beginself.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分钟给楼主写了个DEMO
Delphi(Pascal) code
// 客户端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; 

读书人网 >.NET

热点推荐