求助高手:用indy的tcp控件发送和接收数组该用什么函数?

renxucai 2008-03-13 04:45:33
write() writeln()都是发送字符串
writestream()发送流,也是字符串
witeinteger()发送整数
~~~~~~

我想发送数组,还有接收?请问该用哪个函数?
...全文
119 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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;
回复
相关推荐
基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar 1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需求分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实现 10 5.1 功能模块1详细设计(综合查询员工信息)..........................................................10 5.1.1 详细设计.......................................................................................................10 5.1.2 算法流程........................................................................................................15 5.1.3 界面设计及测试结果.....................................................................................15 6 调试分析 15 7 户手册 16 8 测试结果 17 8.1 员工信息的添加...................................................................................................17 8.2 员工信息的修改...................................................................................................17 8.3 员工信息的删除...................................................................................................18 8.4 员工信息的综合查询...........................................................................................18 8.5 员工信息按性别统计的结果................................................................................19 8.6 员工信息按状态统计的结果...............................................................................19 8.7 员工信息按职称统计的结果................................................................................20 9 结论 20 10 参考文献 20
发帖
网络通信/分布式开发
创建于2007-08-02

1572

社区成员

Delphi 网络通信/分布式开发
申请成为版主
帖子事件
创建了帖子
2008-03-13 04:45
社区公告
暂无公告