社区
网络通信/分布式开发
帖子详情
求助高手:用indy的tcp控件发送和接收数组该用什么函数?
renxucai
2008-03-13 04:45:33
write() writeln()都是发送字符串
writestream()发送流,也是字符串
witeinteger()发送整数
~~~~~~
我想发送数组,还有接收?请问该用哪个函数?
...全文
198
5
打赏
收藏
求助高手:用indy的tcp控件发送和接收数组该用什么函数?
write() writeln()都是发送字符串 writestream()发送流,也是字符串 witeinteger()发送整数 ~~~~~~ 我想发送数组,还有接收?请问该用哪个函数?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
renxucai
2008-03-31
打赏
举报
回复
应该是数组的定义上的问题,后来不用变体,我改成
Sendarray:array[0..9]of byte;
用idtcpclient.writebuffer(sendarray,10);
接收到的数据都正常了。
接收的时候用的
idtcpclient.readbuffer();
idtcpclient.readbuffer(),要指明读取的数据的长度,可以读取长度再读取数据的,用的size:=idtcpclient.readfromstack(false,-1,false);
算是可以结贴了,谢谢大家的鼓励。
renxucai
2008-03-14
打赏
举报
回复
对。
我用socket.send 发送 用 Socket.Recv()接收,可以收到数据。
可问题是:
为什么发送和接收到的不一致呢??
我的发送端:
procedure TForm1.BtnSendClick(Sender: TObject);
var
sendarray: variant;
begin
with IdTCPClient do
begin
try
fillchar(sendarray,10,0);
sendarray:=varArrayCreate([0,9],varbyte);
sendarray[0]:=byte($FF);
sendarray[1]:=byte($FF);
sendarray[2]:=byte($FF);
sendarray[3]:=byte($FF);
sendarray[4]:=byte($FF);
sendarray[5]:=byte($FF);
sendarray[6]:=byte($FF);
sendarray[7]:=byte($FF);
sendarray[8]:=byte($FF);
sendarray[9]:=byte($FF);
idtcpclient.Socket.Send(sendarray,10);
end;
end;
我的接收端:
procedure TForm1.IdTCPServerExecute(AThread: TIdPeerThread);
var
received: array[0..9] of byte;
begin
with AThread.Connection do
begin
AThread.Connection.Socket.Recv(received,10);
end;
end;
不管发送数据是什么 接收到 17 32 * * * * * ,前两个字节是17 32
请问为什么?怎么改?
非常感谢。
UndefinedCoder
2008-03-14
打赏
举报
回复
sendarray:=varArrayCreate([0,9],varbyte);
sendarray[0]:=byte($FF);
sendarray[1]:=byte($FF);
sendarray[2]:=byte($FF);
sendarray[3]:=byte($FF);
sendarray[4]:=byte($FF);
sendarray[5]:=byte($FF);
sendarray[6]:=byte($FF);
sendarray[7]:=byte($FF);
sendarray[8]:=byte($FF);
sendarray[9]:=byte($FF);
既然都是Byte数据,为什么要创建变体数组?不管你传什么数据,字符串也好,常规数组也好,传递的都是一块内存,你不会不知道你所要传递的数据的内存起始地址和长度吧?
renxucai
2008-03-14
打赏
举报
回复
很着急,有知道的么?
delphiboy_lwb
2008-03-13
打赏
举报
回复
其实这几个都一样
数组就是字符串,在内存单元中的结构是一样的
procedure TForm1.Button1Click(Sender: TObject);
var
s: array [1..100] of byte;
len: integer;
begin
fillchar(s, 100, 0);
//数组付值
IdTCPClient1.Socket.Send(s, len );
end;
Indy
10
Tcp
接收
数据问题
本文介绍了在Delphi开发中使用
Indy
组件进行
TCP
数据
接收
的方法。针对复杂数据包及XML报文,提供了不依赖于回车键的
接收
示例代码。
文件加壳器 FileLocker V1.1.0
一、功能介绍 ------------ 1. 任意格式加壳:视频、Office 文档、压缩包等都能封进一个 exe,格式无关。 2. 授权码分发:对方机器码 + 你生成的授权码,绑定这台电脑,转发无效。 3. 不提供试用:生成的 exe 必须输入授权码才能打开,内容不会被白嫖。 4. 文件清单(可选):加壳时可勾选「激活前展示文件清单」,对方未授权也能看到包里 有哪些文件、多大(仅文件名和大小,内容仍加密),用来打消"里面是不是空的"疑虑。 5. 永久授权(可选):发码时可勾选「永久」,生成不限日期的授权码,适合资料买断。 6. 仓库备份 / 换机:产品授权信息可一键导出、导入,换电脑不丢。
国央企创新负责人如何借助产业大脑推动内部协同与外部合作?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
实用代码脚本易语言源码进程模块
实用代码脚本易语言源码进程模块
高校技术转移办公室人员如何借助区域科技创新数智大脑提升成果转化匹配效率?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
网络通信/分布式开发
1,594
社区成员
32,944
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章