setlength(command,4);
idtcpserver.readbuffer(pchar(command)^,4);//先读出头标志,
if command='logn' then
接收loginrec//每个标志对应RECORD,这时候应该是知道RECORD长度了。
if command='send' then
接收sendrec
我是想客户端用writebuffer发送,发送的是字符串。如
type
client_report=packed record
command: array [0..1] of char;
msgid: array [0..15] of char;
stat: array [0..6] of char;
end;
aiirii(ari-爱的眼睛) 老大说的和我看的一个socketserver的例子很像:
var
str : string;
deliver:client_deliver;// 自定义record
report:client_report;// 自定义record
begin
str:=socket.ReceiveText;
IF STR[1]+STR[2]='01' THEN
begin
CopyMemory(@deliver,pchar(str),sizeof(client_deliver));
……
IF STR[1]+STR[2]='02' THEN
begin
CopyMemory(@report,pchar(str),sizeof(client_report));
……
end;
本人最近也在处理这个问题,对delphi不熟悉,麻烦死了.我想处理的是网络传送文件,定义的record如下:
type CommBlock = record
Head: string[20],
Size: int,
Data: array[1...1024] of byte;
end;
我在data里存放的可是字符串或者是文件流的一段字节块。比如,当文件传送开始时,client向serve发送head的值为QUERY的record,这时data里存放的是一个格式化的字符串,如FromUser$FileName$FileSize。之后当双方传送文件后,data存放的就是文件流字节段的字节块的。我不清楚怎样把字符串和文件流的字节段写到data字节数据中,又怎样读取。刚发了一个帖子,还没人回答