首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi7自带indy的udp控件有关问题

2012-02-02 
delphi7自带indy的udp控件问题收发一段字符串客户端:procedureTForm1.Button1Click(Sender:TObject)varst

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.

热点排行