Indy /如何只用TIdUDPServer实现数据的发送和接受(50分)

  • 主题发起人 主题发起人 Neo_leaf
  • 开始时间 开始时间
N

Neo_leaf

Unregistered / Unconfirmed
GUEST, unregistred user!
如何只用TIdUDPServer实现数据的发送和接受,
假如目标IP/Port是192.168.3.251:4001(是一台设备,),
本地IP/Port是192.168.3.37:4002(当前电脑),
怎样可以发送、接收命令都用TIdUDPServer完成,
 
发送用SEND 或者 SENDBUFFER

接收有ONUDPREAD事件

在BINDINGS属性里面设置连接参数
 
可以详细点吗,
 
关键是想连接机器并操作他,获取一些结果,
 
没同过UDPINDY吗??

在BINDINGS里面设置自己的IP和端口

启动
idudpserver1.Active:=true;

发送
idudpserver1.Send('对方IP','对方端口','发送的信息,字符串类型);

接收在OnUDPRead事件里面

str:=idudpserver1.ReceiveString();
 
多谢你了,Dong_HC!
按照你的方法试了,但是,在OnUDPRead事件里面设置断点跟踪发现,发送数据后根本没有执行到这个事件里,
不知道为什么?
 
40 40 40 40 01 fb 05 00 00 00 00 21 00 01 00 00 23
如何可以把这个命令以16进制的方式发送到['对方IP','对方端口']l
 
//UDPServer : TIdUDPServer;
var
sBuf: AnsiString;
begin
sBuf := '40 40 40 40 01 fb 05 00 00 00 00 21 00 01 00 00 23';
UDPServer.SendBuffer(Trim(EdtDesIP.Text),StrToInt(EdtDesPort.Text),PChar(sBuf)^, Length(sBuf));
我这样做,发送数据,结果不正确,为什么,我想把'40 40 40 40 01 fb 05 00 00 00 00 21 00 01 00 00 23'以这种方式(16进制)发送给设备,
不知道什么地方错了,希望大家给我指出来,
 
var
sBuf:Tbytes;
begin
sBuf[0]=$40
..............
UDPServer.SendBuffer
 
Tbytes;
----
这个是什么类型,
 
array of byte
 
谢谢,
接受结果了,
 
后退
顶部