怎样用Tidtcp传送和接收记录??? ( 积分: 50 )

  • 主题发起人 主题发起人 delphidel
  • 开始时间 开始时间
D

delphidel

Unregistered / Unconfirmed
GUEST, unregistred user!
假如我定义了一个记录
type
mymsg=record
msg:string[100];
color:tcolor;
font:tfont;
end;
然后怎样在客户端把记录传给服务端?
var
smsg:mymsg;
rmsg:mymsg;
我试了用idtcpclient.writebuffer(smsg,sizeof(smsg));来发送
再用idtcpserver.athread.connection.readbuffer(rmsg,sizeof(rmsg));再edit1.color:=rmsg.color.......但是没有反应..到底是怎么回事呢??
 
你这样传输结构,只是传输结构的地址指针而以。
 
那具体要怎样实现呢???
 
服务器这边放线程里循环读,我用这方法作了个聊天服务器满好用。示例是indy10,indy9不一样。
procedure TForm1.IdTCPServerExecute(AContext: TIdContext);
...
(下句放死循环里)
AContext.Connection.IOHandler.Read**
(连接断开出错后退出循环)
...
end;
 
你把结构的内容重新组织,变成byte数组发送,过去后再分解还原。
 
我是新手..能不能贴出实现部分来呢??
 
稍微搜索了下..有很多类似这个的问题..但都没有人得到很好的解答..晕啊..会的人赐请下啊..
 
唉.大富翁没人了..
 
自己封包,自己解包。
 
我也知道封包啊..上面代码已经写了出来..但就是实现有问题吗?具体点不行吗?
 
sendbuffer(@record,record.size);
这样就可以了,record是结构体变量
 
我的那个方法是可以的..之所以没有反应是因为集里的font有问题..不知道是什么原因..
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
1K
import
I
后退
顶部