indy中的readbuffer问题(100分)

  • 主题发起人 主题发起人 liuyj
  • 开始时间 开始时间
L

liuyj

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在程序中利用readbuffer,writebuffer来传递记录类型的数据,在client端利用writebuffer
向服务器写数据,在server端用readbuffer接收,可就是收不到!请大家给予指点,多谢!
 
能说得详细些吗,将源码贴出来。
 
rr 为记录类型:
trr=packet record
a:integer;
b:single;
end;
prr=^Trr;

客户端和服务器端buf定义是相同的
buf:array[0..100] of char;
pbuf:pchar;


客户端:

rr.a:=100;
rr.b:=12.8;
c1.Connect;
c1.WriteBuffer(rr,sizeof(rr));
c1.Disconnect;
服务器端:
在execute事件中:
Athread.Connection.ReadBuffer(buf,sizeof(buf));
rr.a:=prr(pbuf)^.a;
rr.b:=prr(pbuf)^.b;
showmessage(format('%3.2f %d',[rr.a,rr.b])); >>>>这一句没有执行
Athread.Connection.Disconnect;
 
我也正在琢磨传递记录类型这个问题,但有一点肯定是,网络并不知道你传递的数据的相应地址,所以无法再给你还原出来
 
Athread.Connection.ReadBuffer(buf[0],sizeof(buf));
pbuf:=@buf[0];
rr.a:=prr(pbuf)^.a;
rr.b:=prr(pbuf)^.b;
showmessage(format('%3.2f %d',[rr.a,rr.b])); >>>>这一句没有执行
Athread.Connection.Disconnect;
 
记录类型申明改为
trr= record
a:integer;
b:single;
end;
试一试,我看了你的程序,好像没有问题
 
还是不行,是不是indy本身writebuffer的原因,我用原来的internet中serversocket就很做出来了!
 
先放到memstream里,然后用writestream发送,
用readstream接收
 
接受答案了.
 
后退
顶部