delphi7自带indy的udp控件问题
收发一段字符串
客户端:
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;
interface
uses
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.