请问我的UDP为什么不行呢?UDPServer不能接收。
unit SendUDP;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient,
IdUDPServer, IdSocketHandle;type TCommBlock = record
SenderName,
Msg : String[255];
end; TUDP_sendForm = class(TForm)
IdUDPClient1: TIdUDPClient;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label3: TLabel;
Memo1: TMemo;
Label4: TLabel;
Label5: TLabel;
Edit4: TEdit;
Button1: TButton;
IdUDPServer1: TIdUDPServer;
Button2: TButton;
Label6: TLabel;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
private
{ Private declarations }
public
{ Public declarations }
end;var
UDP_sendForm: TUDP_sendForm;implementation{$R *.dfm}procedure TUDP_sendForm.Button1Click(Sender: TObject);
var Comm : TCommBlock;
i : Integer;
begin
if Length(Edit4.Text)>0 then
begin Comm.SenderName := 'AAA';
Comm.Msg := Edit4.Text; IdUDPClient1.SendBuffer(Comm, sizeof(Comm));
Memo1.Lines.Add(Edit4.Text);
Edit4.Text := ''; end;
end;procedure TUDP_sendForm.Button2Click(Sender: TObject);
begin
with IdUDPClient1 do
begin
Port := StrToInt(Edit3.Text);
Host := Edit1.Text;
end;with IdUDPServer1 do
begin
Active := False;
DefaultPort := StrToInt(Edit2.Text);
Active := True;
end;
end;procedure TUDP_sendForm.IdUDPServer1UDPRead(Sender: TObject;
AData: TStream; ABinding: TIdSocketHandle);
var Comm : TCommBlock;
begin
AData.ReadBuffer(Comm,AData.Size);
Memo2.Lines.Add(Comm.SenderName);
end;end.
unit SendUDP;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient,
IdUDPServer, IdSocketHandle;type TCommBlock = record
SenderName,
Msg : String[255];
end; TUDP_sendForm = class(TForm)
IdUDPClient1: TIdUDPClient;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Label3: TLabel;
Memo1: TMemo;
Label4: TLabel;
Label5: TLabel;
Edit4: TEdit;
Button1: TButton;
IdUDPServer1: TIdUDPServer;
Button2: TButton;
Label6: TLabel;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
private
{ Private declarations }
public
{ Public declarations }
end;var
UDP_sendForm: TUDP_sendForm;implementation{$R *.dfm}procedure TUDP_sendForm.Button1Click(Sender: TObject);
var Comm : TCommBlock;
i : Integer;
begin
if Length(Edit4.Text)>0 then
begin Comm.SenderName := 'AAA';
Comm.Msg := Edit4.Text; IdUDPClient1.SendBuffer(Comm, sizeof(Comm));
Memo1.Lines.Add(Edit4.Text);
Edit4.Text := ''; end;
end;procedure TUDP_sendForm.Button2Click(Sender: TObject);
begin
with IdUDPClient1 do
begin
Port := StrToInt(Edit3.Text);
Host := Edit1.Text;
end;with IdUDPServer1 do
begin
Active := False;
DefaultPort := StrToInt(Edit2.Text);
Active := True;
end;
end;procedure TUDP_sendForm.IdUDPServer1UDPRead(Sender: TObject;
AData: TStream; ABinding: TIdSocketHandle);
var Comm : TCommBlock;
begin
AData.ReadBuffer(Comm,AData.Size);
Memo2.Lines.Add(Comm.SenderName);
end;end.
解决方案 »
- 调研一下各位大侠除了delphi外的其他开发
- 100求MIDAS中用ClientDataSet取不到数据的问题,,在此等候。。。
- TClientSocket使用Open()连不上服务器的问题,在线等待高手解决!
- 当WINDOW删除文件时怎么样能给出自己的对话框来确定是否真的删除文件
- delphi sqlserver读取varbinary类型的数据
- 用application.MessageBox中遇到的问题(急)
- 关于数据长度的问题
- 请求帮助
- 找点delphi写com+的中文资料,英文看起来好难受
- Delphi窗体重用
- 用adoquery或adotable取得的结果集能否如后台表功能一样做第二次查询?如果能,该怎么写编码?
- 熟悉报表控件的DX进来看看好吗?3Q
试试
1.当我按第一次Button2时(设置),有出错信息,第二次无出错信息,是不是我的Delphi6有问题?
2.按发送键后(IP=127.0.0.1,双方的Port=6000)Memo2无接收内容。