socket传数组的问题?在线等待!!!!!!!!!(50分)

  • 主题发起人 主题发起人 yccai
  • 开始时间 开始时间
Y

yccai

Unregistered / Unconfirmed
GUEST, unregistred user!
type
cmd= record
a: integer;
b: array[0..7999] of char
end;
TMycmd= array of cmd;

var
mycmd:TMycmd;
/////////////////////////
Setlength(mycmd,2);
mycmd[0].a:=0;
Strcopy(mycmd[1].b,Pchar('00000000'));
mycmd[1].a:=1;
Strcopy(mycmd[1].b,Pchar('11111111'));
socket线程模式为阻塞模式.
用socket的TwinSocketStream怎么发.怎么收.
用Tserversocket和TClientSocket(indy的也行).
 
发送:
pStream := TWinSocketStream.Create(CltSocket.Socket, 60000);
pStream.Write(mycmd,Sizeof(mycmd));
接收:
var
mycmd1: TMycmd;
setlength(mycmd1,2);
pStream := TWinSocketStream.Create(ClientSocket, 60000);
pStream.Read(mycmd1, sizeof(Tmycmd));

好象不行!!!!请各位朋友指教.



 
receivebuf(),sendbuffer(),以前的帖子多了去了,翻翻吧
 
我找了以前的贴子,还是不行啊.不知道错在哪里.
 
上面的代码有两个问题:
1、发送和接收都是一个sizeof(Tmycmd),就是说第二个并没有被发送出去,应该改为
sizeof(Tmycmd)*2。
2、b是一个地址,发送过去是没什么用的,所以接收到的是内存地址,而不是内容。改进方
法是可以修改结构体,或者分为两步发送,一是先发送a,再发送b(内容)
 
原来我用的是string,看到贴子上说不能用才改成的array of char啊
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
1K
import
I
I
回复
0
查看
977
import
I
后退
顶部