memorystream的问题,请大侠指教。(50分)

  • 主题发起人 主题发起人 rlz
  • 开始时间 开始时间
R

rlz

Unregistered / Unconfirmed
GUEST, unregistred user!
我定义了一个类型:
type
TMyrec = record
Code: Integer;
IP: String[15];
Password: String[15];
State: Byte;
Port: Word;
end;

发送端如下:
var
login:tmyrec;

login.Code :='111';
login.Password :='12345678' ;
login.Port :=8090;
login.State :=1;
AStream := TMemoryStream.Create;
try
AStream.Write(login, nBufferSize);
AStream.Position := 0;
udpclient.SendBuffer(AStream.Memory^, AStream.Size);
finally
AStream.Free;
end;

接受时这样处理:
adata:stream;
iCommand: Integer;
begin
CopyMemory(@iCommand, AData, SizeOf(iCommand));
LogginRec := PLogginRec(Adata)^;

Memo1.Lines .Add('code: ' + IntToStr(LogginRec.Code) );
Memo1.Lines .Add('password:'+login.password);
Memo1.Lines .Add('port:'+inttostr(login.port));
Memo1.Lines .Add('state:'+inttostr(login.state));
adata.Free;

end;
为什么看到的是乱码?请大侠指教。
说明:我用的是idudpclient发送的,收是用idudpserver.
 
udpclient.SendBuffer(AStream.Memory^, AStream.Size);
~~~这里的指针符号去掉看看

改成:CopyMemory(@iCommand, AData, SizeOf(AData));
 
还要在CopyMemory上加上
iCommand:=AllocMem(size);
 
我还是喜欢NmUdp控件,
要发什么,很简单,有现成例子,
 
因为idudpserver是多线程的,所以我用了它。
我试了,还是不行呀,请各位大侠救命呀。
我在线等待。
 
后退
顶部