怎样通过IdTCPClient发送和接收16进制呢?

life923 2012-11-07 04:36:22
怎样通过IdTCPClient发送和接收16进制呢?
...全文
672 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
life923 2012-11-23
  • 打赏
  • 举报
回复
引用 7 楼 darkeye 的回复:
给你个例子 var wdata : array[0..100] of byte; wLen : Integer; begin s := Edit1.text; // 你要发的内容 wLen := Length(s); move(wdata[0], s[1], wLen); // 发送 idTcpClient.writeBuffer(……
谢谢 我想问下为什么用固定的数组可以发送,为什么用动态数组却不能发送呢? 接收那边每次值都会变化 var sbuf: array of byte; i,j: Integer; begin SetLength(sbuf,28); for j := 0 to 28-1 do begin sbuf[j]:=StrToInt('$AA'); end; AThread.Connection.WriteBuffer(sbuf,length(sbuf)); 用sbuf2: array[1..28] of byte; 是正常的
darkeye 2012-11-23
  • 打赏
  • 举报
回复
动态数组的发送,可按下面方式发送

var
  sbuf: array of byte;
  i,j: Integer;
begin
  SetLength(sbuf,28);
  for j := 0 to 28-1 do
  begin
    sbuf[j]:=StrToInt('$AA');
  end;
  

   for j := 0 to 28-1 do
   begin
     AThread.Connection.WriteBuffer(sbuf[j],1);
   end;

life923 2012-11-21
  • 打赏
  • 举报
回复
引用 5 楼 SQLDebug_Fan 的回复:
这和进制没关系,只和你发送机制有问题,writeln是以回车换行为结尾发送数据。补下网络编程基础。
能不能给个发送16进制的例子啊
darkeye 2012-11-21
  • 打赏
  • 举报
回复
给你个例子 var wdata : array[0..100] of byte; wLen : Integer; begin s := Edit1.text; // 你要发的内容 wLen := Length(s); move(wdata[0], s[1], wLen); // 发送 idTcpClient.writeBuffer(wdata, wlen); // 读信息用 idTcpClient.ReadBuffer就可以了 end;
SQLDebug_Fan 2012-11-16
  • 打赏
  • 举报
回复
这和进制没关系,只和你发送机制有问题,writeln是以回车换行为结尾发送数据。补下网络编程基础。
life923 2012-11-16
  • 打赏
  • 举报
回复
引用 2 楼 gzzai 的回复:
系统自带了一个demo在\Demos\Indy\TCPStreamClientServer文件夹里
我这个文件夹是空的 下面这样吗 发送 procedure TForm1.Button4Click(Sender: TObject); var scmdatabyte: array of byte; scmData: String; i:Integer; begin scmData:='1A'; SetLength(scmdatabyte, Trunc(Length(scmdata) / 2)); for i:= 0 to Trunc(Length(scmdata)/2)-1 do begin scmdatabyte[i] := StrToInt('$' + scmdata[2 * i] + scmdata[2 * i + 1]); end; IdTCPClient1.WriteBuffer(scmdatabyte,10); end; 接收 procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread); var i,ilen,count: integer; buf: array of byte; begin try count:=AThread.Connection.ReadFromStack; if count<>0 then begin setlength(buf, count); AThread.Connection.ReadBuffer(buf[0], count); end; Memo1.Lines.Add(inttostr(count)); finally end; end;
life923 2012-11-16
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
这根多少禁制没关系,你接收到的都算二进制数据,你自己转为其他类型
我直接用IdTCPClient1.WriteLn(Edit1.Text); 来发 对方说收不到,要用16进制发
广州佬 2012-11-07
  • 打赏
  • 举报
回复
系统自带了一个demo在\Demos\Indy\TCPStreamClientServer文件夹里
bdmh 2012-11-07
  • 打赏
  • 举报
回复
这根多少禁制没关系,你接收到的都算二进制数据,你自己转为其他类型

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧