socket通讯,怎么发送动态数组?我按下面的程序发了,可接收到的是乱码(50分)

  • 主题发起人 主题发起人 kiths
  • 开始时间 开始时间
为何不以文件的形式发送那?
 
难道真的没有高好人吗?
 
PMSGData=^TMSGData
TMSGData=Record
Strlength:integer;
Str:Array[0..0] of char;
end;

procedure TfrmClientMain.tbSendClick(Sender: TObject);
var MSGData:PMSGData;
i,len:integer;
SendStr:string;
tmpPchar: pchar;
begin
SendStr:='<SMSMsg>13900239223$break$13916809666$break$天之道损有余而补不足,是故虚胜实,不足胜有余$break$-YYFA';
len:=length(SendStr);
GetMem(MSGData, len+sizeof(integer)+1);
try
MSGData.Strlength:=len;
tmpPchar := pchar(SendStr);
for i := 0 to len-1 do
begin
MSGData.Str := tmpPchar;
end;
MSGData.Str[len] := #0;
memo1.lines.add(inttostr(len));
memo1.lines.add(inttostr(sizeof(integer)+len));
Messagebox(0,pchar(MSGData.Str),'',MB_OK);
ClientSocket.Socket.Sendbuf(MSGData,sizeof(integer)+len);
finally
FreeMem(MSGData);
end;
end;
顺便问一下,ghb1974的代码不行吗?
 
修改一下
PMSGData=^TMSGData
TMSGData=Record
Strlength:integer;
Str:Pointer;
end;

 
那发送呢?长度怎么定?用什么函数发?楼上的兄弟有试过吗?
 
sorry,i missed a '^':
ClientSocket.Socket.Sendbuf(MSGData^,sizeof(integer)+len);
 
接受答案了.
 
后退
顶部