期待高手: TClientSocket 如何接收记录类型(record)? ( 积分: 100 )

  • 主题发起人 主题发起人 惟一
  • 开始时间 开始时间

惟一

Unregistered / Unconfirmed
GUEST, unregistred user!
(Server 和 Client 都定义了 record 类型)
type TRec = packed record
mTitle : string[10];
mSize : integer;
mArray : array[0..2] of string[10];
end;

var mRec : TRec;
-------------------------------

Server 端:
===========
ServerSocket1.Socket.Connections[0].SendBuf(mRec, sizeof(mRec));

Client 端:
==========
Socket.ReceiveBuf(mRec, Socket.ReceiveLength);

>>
>>问题: 当 Server 端发送的 mRec 大小超过8k时, Client 端 将会触发多次 ClientSocket1Read 事件. 我该如何正确接收这个超过 8K 的结构?

望高手指点迷津!
 
(Server 和 Client 都定义了 record 类型)
type TRec = packed record
mTitle : string[10];
mSize : integer;
mArray : array[0..2] of string[10];
end;

var mRec : TRec;
-------------------------------

Server 端:
===========
ServerSocket1.Socket.Connections[0].SendBuf(mRec, sizeof(mRec));

Client 端:
==========
Socket.ReceiveBuf(mRec, Socket.ReceiveLength);

>>
>>问题: 当 Server 端发送的 mRec 大小超过8k时, Client 端 将会触发多次 ClientSocket1Read 事件. 我该如何正确接收这个超过 8K 的结构?

望高手指点迷津!
 
自定义一个包头协议,发前封包,发,收,解包。

包头协议简单的可以有头、长度、内容。
 
楼上说的可以,发得时候先分包发,在分包接受,然后合成
 
谢谢两位回复. 你们说的我都知道, 现在关键不知道如何写? 能给一段实际代码吗?
 
多人接受答案了。
 
后退
顶部