H
hegyi
Unregistered / Unconfirmed
GUEST, unregistred user!
我写一个C/S结构的程序,在通信时定义一个类似如下的结构:
TcomBlock=record
sendID,toID:Integer;
MSG:string[255];
end;
由于MSG使用定长度,在使用IdTcp控件时,服务器端和客房端都可以使用readBuff方法读出数据。这没问题。但是,255的长度太短,而且我希望使用不定长度通信,以节约带宽,即改为:
tcomBlock=record
size:integer;
sendID,toID:integer;
MSG:string;
end;
我的问题是:在写入数据和读取数据时应该注意什么问题才能成功呢?我注意到,无论MSG赋什么值,Sizeof(CB:Tcomblock)都是相同的值,CB.size:=sizeof(CB)就没有意义了。在服务端,由于不知道包的长度,怎么样正确读取数据呢?
另外,我分成两段来读,行吗?如果行,应该怎么做呢?最好有代码,谢谢先。
300分太少,可只允许300,回答得好另开贴加分。
TcomBlock=record
sendID,toID:Integer;
MSG:string[255];
end;
由于MSG使用定长度,在使用IdTcp控件时,服务器端和客房端都可以使用readBuff方法读出数据。这没问题。但是,255的长度太短,而且我希望使用不定长度通信,以节约带宽,即改为:
tcomBlock=record
size:integer;
sendID,toID:integer;
MSG:string;
end;
我的问题是:在写入数据和读取数据时应该注意什么问题才能成功呢?我注意到,无论MSG赋什么值,Sizeof(CB:Tcomblock)都是相同的值,CB.size:=sizeof(CB)就没有意义了。在服务端,由于不知道包的长度,怎么样正确读取数据呢?
另外,我分成两段来读,行吗?如果行,应该怎么做呢?最好有代码,谢谢先。
300分太少,可只允许300,回答得好另开贴加分。