首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

每个包:数据长度(4个字节)+数据, 这个如何实现

2012-02-24 
每个包:数据长度(4个字节)+数据, 这个怎么实现?想做一个socket程序,客户端每个发送的包组成原则是:数据长

每个包:数据长度(4个字节)+数据, 这个怎么实现?
想做一个socket程序,客户端每个发送的包组成原则是   :
数据长度(4个字节)+数据

但是具体写的过程有些转换不太了解:
1、首先应该是有个char(4)表示长度,如何把数据的长度int给char(4)?
2、按照sendbuf发送,如何把char(4)   和数据内容string合成一个char数组   或者pchar   ?
多谢各位!

[解决办法]
var
ms:TMemoryStream;
I:Integer;
s:string;
j:Integer;
begin
ms:= TMemoryStream.Create;
i:=122200;
s:= 'fdsafdsafdsafdsafdsafdasfdsa ';
ms.Write(i,sizeof(i));
ms.Write(s,length(s));
ms.Position:=0;
ms.Read(j,4);
showmessage( IntToStr(J) );
ms.Free;
end;
[解决办法]
type
PMyPacket = ^TMyPacket;
TMyPacket = packed record
Len: Integer;
Str: array [0..0] of Char;
end;

function SendData(const AData: string): Boolean;
var
Packet: PMyPacket;
L, DataLen: Integer;
Buffer: array [0..10240 - 1] of Char;
begin
L := Length(AData);
DataLen := SizeOf(L) + L;

Packet := @Buffer[0];
Packet.Len := htonl(L);
Move(AData[1], Packet.Str[0], L);

Result := Socket.SendBuf(Buffer[0], DataLen) = DataLen;
end;

热点排行