收发一段字符串
客户端:
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;点发送,接收总是报错,请教高手,原因
客户端:
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;点发送,接收总是报错,请教高手,原因
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.