D
DiamondKing
Unregistered / Unconfirmed
GUEST, unregistred user!
在使用UDP协议编程中,我想先将数据存入到流中之后,在发送以提高效率。当客户端读
数据时却发现传输的文本为空,于是做了如下测试。
基本代码如下: ---->注意** 处
var
Buf,NewBuf:array of byte;
i:integer;
Str,NewStr:string;
len,HeadLen:integer;
MyStream:TMemoryStream;
begin
MyStream:=TMemoryStream.Create;
HeadLen:=16;
Str:='大风起兮云飞扬!';
Len:=length(Str);
setLength(Buf,HeadLen+len+1);
//传输文本前加一段16进制校验码 :ABABABABABABABAB 共16位
for i:=0 to Headlen-1 do
begin
if ((i mod 2)=0 ) then Buf:=$A
else Buf:=$B;
end;
//将Str 存储到 Buf
CopyMemory(@Buf[HeadLen],@Str[1],len);
//以#0结尾
Buf[length(buf)-1]:=0;
try
MyStream.Write(buf,headlen+len+1);
setLength(NewBuf,length(buf));
MyStream.Read(NewBuf,Length(Buf));
//--------------------------------------
setLength(NewStr,len); //分配NewStr的长度
CopyMemory(@NewStr[1],@NewBuf[Headlen],len); //从NewBuf 读NewStr
Showmessage(NewStr); //**读出来的为空!!!!!!**
//----------------------------------------Test
finally
MyStream.Free ;
end;
end;
刚存到流中的数据,读出来就为空了。
**读出来的为空!!!!!!**
然后在程序中加入以下代码测试
{ //-----------------------------
for Testi:=0 to Length(Newbuf)-1 do
TestStr:=TestStr+inttohex(NewBuf[Testi],1);
ShowMessage(TestStr);
//-----------------------------
}
居然得到了一大堆的0 .........
一上午都没有能够解决!
数据时却发现传输的文本为空,于是做了如下测试。
基本代码如下: ---->注意** 处
var
Buf,NewBuf:array of byte;
i:integer;
Str,NewStr:string;
len,HeadLen:integer;
MyStream:TMemoryStream;
begin
MyStream:=TMemoryStream.Create;
HeadLen:=16;
Str:='大风起兮云飞扬!';
Len:=length(Str);
setLength(Buf,HeadLen+len+1);
//传输文本前加一段16进制校验码 :ABABABABABABABAB 共16位
for i:=0 to Headlen-1 do
begin
if ((i mod 2)=0 ) then Buf:=$A
else Buf:=$B;
end;
//将Str 存储到 Buf
CopyMemory(@Buf[HeadLen],@Str[1],len);
//以#0结尾
Buf[length(buf)-1]:=0;
try
MyStream.Write(buf,headlen+len+1);
setLength(NewBuf,length(buf));
MyStream.Read(NewBuf,Length(Buf));
//--------------------------------------
setLength(NewStr,len); //分配NewStr的长度
CopyMemory(@NewStr[1],@NewBuf[Headlen],len); //从NewBuf 读NewStr
Showmessage(NewStr); //**读出来的为空!!!!!!**
//----------------------------------------Test
finally
MyStream.Free ;
end;
end;
刚存到流中的数据,读出来就为空了。
**读出来的为空!!!!!!**
然后在程序中加入以下代码测试
{ //-----------------------------
for Testi:=0 to Length(Newbuf)-1 do
TestStr:=TestStr+inttohex(NewBuf[Testi],1);
ShowMessage(TestStr);
//-----------------------------
}
居然得到了一大堆的0 .........
一上午都没有能够解决!