发送和接收结构的问题,请教高手(79分)

  • 主题发起人 主题发起人 xiaoa2002
  • 开始时间 开始时间
X

xiaoa2002

Unregistered / Unconfirmed
GUEST, unregistred user!
从Linux端接收数据
结构定义如下:
TOPRAT = record
id : Shortint;
name : array[1..10] of char;
fp : integer;
branch : array[1..10] of char;
key : array[1..20] of Shortint;
end;
首先,发送6(shortint型)请求Linux端,返回6;
然后,判断6,说明Linux端准备好,向Linux端发送表名(请求某个表的数据),本例表名OPRAT;
每次接收一条记录,发送255(shortint型),确定收到数据,直到接收数据完毕。
用ClientSocket控件,目前的困难是:
如何判断接收到的是数据(结构),还是握手数据(6,255)?
糊涂了 :(
实在是分不多了,请帮帮吧!
 
我也做过传输文件,建议你将发送数据与发送指令分开两种方式,比如发送'rec'代表接收,发送'255'代表文件大小,这样就可以判断到了!
 
我传输的不是文件,而是一条一条的记录
 
反正意思都是一样的,你就是要将指令与数字分开就行了!
 
嗯,我用了一个私有变量,i=0 时,判断命令,其它时接收记录
 
1.发送部份
var
TmessageHead:TOPRAT;
begin
TmessageHead.id:=??;
.....
TmessageHead.key:=??;
Socket.SendBuf(@TmessageHead, sizeof(TmessageHead);
end;
2.接收
var
i: Integer;
Inf_Head:TOPRAT;
begin
i := Socket.ReceiveBuf(Inf_Head, sizeof(TMessageHead));
if i <> sizeof(TmessageHead) then
Exit;
这里可以提取, Inf_Head.id....Inf_Head.key 的值了,
end;
这里都简化掉了,有一些变理也没有声明,
 
帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯
 
多人接受答案了。
 
后退
顶部