有个 TIdUdpServer控件UdpS,两个个文本框控件edit1、edit2, 一个按钮控件bt 一个memo控件
写个程序实现以下功能:fromcreate事件中开启udp控件,端口号为edit1中数值。点击按钮给 ‘127.0.0.1’端口号为edit2内容发消息,消息内容为‘tttttt’。udpS事件中将收到的消息在memo控件中显示出来。程序在机器上执行2次,可以互相发送消息并显示出来贴出frmOncreate代码:
按钮代码:
udpS收到消息事件代码:
写个程序实现以下功能:fromcreate事件中开启udp控件,端口号为edit1中数值。点击按钮给 ‘127.0.0.1’端口号为edit2内容发消息,消息内容为‘tttttt’。udpS事件中将收到的消息在memo控件中显示出来。程序在机器上执行2次,可以互相发送消息并显示出来贴出frmOncreate代码:
按钮代码:
udpS收到消息事件代码:
事件,OnUDPRead中的AData就是接受的数据
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, StdCtrls,IdSocketHandle;type
TForm1 = class(TForm)
Button1: TButton;
IdUDPServer1: TIdUDPServer;
Memo1: TMemo;
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.Button1Click(Sender: TObject);
begin
IdUDPServer1.Send('127.0.0.1',80,'abc');
end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
begin
Memo1.Lines.LoadFromStream(AData);
end;end.
我贴代码来看:
procedure TForm1.udpSUDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var str,tmp:string; //LoginPac: TLoginPac;
begin
try
//读取消息
AData.Seek(0,0);
SetLength(str,AData.size);
AData.Read(str[1],AData.Size);
msg.Text:=ABinding.PeerIP+'【'+inttostr(ABinding.PeerPort)+'】:'+str+#13+#10+msg.Text;
except
msg.Text:='监听错误'+#13+#10+msg.Text;
end;end;发送代码:
procedure TForm1.Button2Click(Sender: TObject);
begin
udpS.Send('127.0.0.1',strtoint(edit7.Text),'ETE'+edit1.Text)
end;procedure TForm1.FormShow(Sender: TObject);
begin
udpS.Active:=false;
udpS.DefaultPort:=8765;
udpS.Active:=true;
end;===========================================
发送消息时报 stocket 10054错误。若ip地址换一个不存在的地址,比如192.168.1.93内网无此机器
则不报错。啥问题
2.10054的话:
a.检查下防火墙,端口开放没;
b.检查下端口,填对着没;
c.把127.0.0.1换成本机内网IP看行不;再不行只能等高手啦~
台式机客户端给台式机服务端发消息,正常
紧接着
笔记本客户端给台式机服务端发消息,正常
笔记本再次给笔记本服务端发消息,正常。奇怪了。。现在没问题了 笔记本断开网络
重新运行程序 也完全正常了。
可我半句代码也没修改啊。
咋回事?