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

关于16进制UDP发送有关问题。特急

2013-10-22 
关于16进制UDP发送问题。特急!!!有这么12个00 0a e0 00 84 04 34 00 35 00 36 00十六进制字符(不是字符串),

关于16进制UDP发送问题。特急!!!
有这么12个00 0a e0 00 84 04 34 00 35 00 36 00十六进制字符(不是字符串),我现在要用UDPclient发送给对方,不知怎样定义他,之前COM串口我是这样作的(sendstr16:=#$00#$0a#$e0#$00#$84#$04#$34#$00#$35#$00#$36#$00;然后发送即可)没有问题,但在UDP中却不行了idudpclient1.Send(pchar(sendstr16)),解析出来却是字符串。对方接收到的根本不是00 0a e0 00 84 04 34 00 35 00 36 00十六进制字符而是把他看成字符串了,接到了28个字节本来只有12个。不好意思,没有分了,之后我补上
[解决办法]
楼主 用的 D版本几啊? Indy版本几啊?

你用idudpclient1.Send 把数据当字符串发,当数据中有 #$00 它就当字符串结束了,于是数据变短了,当不遇到 #$00 时,它就一直往后找到#$00为止,于是数据变长了。
看楼主现象,数据变长了,应该用的 是默认宽字符版 的 Delphi 。
idudpclient1 肯定有别的发送函数可以调用的啊,我这 idudpclient1.SendBuffer 是传 TIdBytes 类型的参数,你将数据定义到 TIdBytes 再发试试。

实在不行,直接winsock2-API的sendto ,肯定可以。
[解决办法]
SendBuffer 啊,非常简单的事情啊
[解决办法]

var
  RxBuf:TIdBytes; 
begin     
  RxBuf := Idglobal.RawToBytes(DM.uUDPBroadcastingBuf, SizeOf (DM.uUDPBroadcastingBuf));
  //idpclnt.Send('192.168.1.255',7890,'oushengfen'); {测试数据}
  idpclnt.SendBuffer('50.255.255.255',8888,RxBuf);

热点排行