我用socket发送记录类型可是收到的数据是乱码,为何?
PTReadSocketData = ^ReadSocketData
TReadSocketData = record
I: Integer;
S: string;
end;------------------------------------
这是发送部分
begin
New(ReadSocketData);
ReadSocketData.S := 'qwertyqwert';
ReadSocketData.I := 2134567;
ClientSocket1.Socket.SendBuf(ReadSocketData, 1024);
Dispose(ReadSocketData);
end;------------------------------------
这是接收部分
var
PKTLen: Integer;
begin
New(ReadSocketData);
repeat
PKTLen := recv(NS, ReadSocketData, 1024, 0);
WriteLn(ReadSocketData^.S);
WriteLn(IntToStr(ReadSocketData^.I));
until PKTLen < 1;
Dispose(ReadSocketData);
end;
大家看看为什么接收到的数据不对!我是百思而不得其解.
PTReadSocketData = ^ReadSocketData
TReadSocketData = record
I: Integer;
S: string;
end;------------------------------------
这是发送部分
begin
New(ReadSocketData);
ReadSocketData.S := 'qwertyqwert';
ReadSocketData.I := 2134567;
ClientSocket1.Socket.SendBuf(ReadSocketData, 1024);
Dispose(ReadSocketData);
end;------------------------------------
这是接收部分
var
PKTLen: Integer;
begin
New(ReadSocketData);
repeat
PKTLen := recv(NS, ReadSocketData, 1024, 0);
WriteLn(ReadSocketData^.S);
WriteLn(IntToStr(ReadSocketData^.I));
until PKTLen < 1;
Dispose(ReadSocketData);
end;
大家看看为什么接收到的数据不对!我是百思而不得其解.
解决方案 »
- 求教TIDHTTP,Post方法返回值问题
- 请问已知一16进制字符串,写进二进制文件后如何得到与UE读的一样?
- 枚举NT服务程序,在XP下没问题,在2000下却得不到服务列表
- 关于winexec的问题,请大家帮助!!!!!!!
- delphi7下corba idl 无法生成代码
- 找一个DbGrid控件,实现直接按列查找功能
- 采用什么工具制作中文的CHM格式的帮助文件比较好?
- 特急:sql server数据库复制到另一计算机上后打不开
- 感谢[email protected],来接分!!
- 如何给comboBox的下拉列表加上水平滚动条或改变其宽度
- 有谁熟悉acreport 进来看看
- 各位高手可以帮我翻译一下这个题目吗???
TWriteSocketData = record
Password: array[0..9] of Char;
CommandID: array[0..9] of Char;
CommandParamstr: array[0..30] of Char;
I: Integer;
B: Byte;
// SocketID: TSocket;
MessageStr: array[0..9] of Char;
FilePath: array[0..9] of Char;
StrList: TList;
// DataBlockBuf: array[0..4095] of Byte;
end;
我想把以下的格式:
TFileInfo = record
FileName: array[0..9] of Char;
FileAttr: array[0..9] of Char;
FileSize: Integer;
FileDate: array[0..30] of Char;
end;
放在一个TStringsList里面,然后用SendBuf来发出去,但是不行.看看大家有没有好的办法没有.
FMemoryStrem.Write(ReadSocketData^,SizeOf(TReadSocketData));
其中ReadSocketData.S要定义为短字符串或者char数组
TReadSocketData = record
i : Integer;
s : string;
end;
//////////////////////////////////////////////////////////
var
Buffer : TByteDynArray;
ReadSocketData : TReadSocketData;
begin
ReadSocketData.S := 'qwertyqwert';
ReadSocketData.I := 2134567; SetLength(Buffer,SizeOf(ReadSocketData.i)+Length(ReadSocketData.s));
FillMemory(@Buffer[0],Length(Buffer),0);
Move(ReadSocketData,Buffer[0],Length(Buffer));
ClientSocket1.Socket.SendBuf(Buffer[0], Length(Buffer));
end;
tclientdataset.savetostream(astream);
bstream:=zipstream(astream);
socket.sendstream(bstream);