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;