读书人

紧急网络传送记录类型的有关问题

发布时间: 2012-02-07 17:45:36 作者: rapoo

紧急求救:网络传送记录类型的问题
问题现象:在服务端接收到的结构是乱码
vc中的结构
struct File_CMD
{
int m_msg;//操作码
char filename[512];//文件名或其它的
char user[32];//用户名
char PworCrc[32];//密码或CRC值
int SESSION;//连接标志,用来保持连接的
int m_ok;
LARGE_INTEGER Filesize;//文件大小
LARGE_INTEGER m_begin;//开始字
LARGE_INTEGER m_end;//结束
};
根据vc中的结构改的
记录的定义
type
client_record=record
m_msg:integer;//操作码
filename:string[255];//文件名或其它的
user:string[32];//用户名
PworCrc:string[32];//密码或CRC值
SESSION:integer;//连接标志,用来保持连接的
m_ok:integer;
Filesize:integer;//文件大小
m_begin:integer;//开始字
m_end:integer;//结束
end;
下面是主要代码
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active:=true;
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
memo1.Lines.Add(ClientSocket1.Socket.RemoteHost);
end;

procedure TForm1.Button2Click(Sender: TObject);


begin
GetMem(Buffer1,sizeof(xinxi));
ClientSocket1.Socket.SendBuf(Buffer1,sizeof(xinxi)) ;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
user,pass:string ;

begin
//user:=SetLenth('test',32);
xinxi[0].m_msg:=1;//操作码
xinxi[0].filename:='s.text';//文件名或其它的
xinxi[0].user:='test';//用户名
xinxi[0].PworCrc:='test';//密码或CRC值
xinxi[0].SESSION:=3;//连接标志,用来保持连接的
xinxi[0].m_ok:=0;
xinxi[0].Filesize:=100000;//文件大小
xinxi[0].m_begin:=0;//开始字
xinxi[0].m_end:=100000;//结


end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FreeMem(Buffer1,sizeof(xinxi));
end;

[解决办法]
File_CMD = record
m_msg:integer;
filename:array[0..511] of char;
user:array[0..31] of char;
PworCrc:array[0..31] of char;
SESSION:integer;
m_ok:integer;
Filesize:LARGE_INTEGER;
m_begin:LARGE_INTEGER;
m_end:LARGE_INTEGER;
end;

读书人网 >.NET

热点推荐