我在客户端定义了一个结构
TKunStreamBlock= record
stype,
Command:string[100];
Stream:Tmemorystream;
end;
其中stream存放的是图片和文字的内容的流,问题是现在怎样发送到服务端中去,下面的代码在服务端可以收到Stype和Command的值,但是Stream的值不能收到
客户端:
KunStreamBlock.stype:='MSG';
KunStreamBlock.Command:='SEND';
KunStreamBlock.Stream:=TmemoryStream.create;
RichEditClient.Lines.SaveToStream(KunStreamBlock.Stream);
KunStreamBlock.Stream.Position:=0;
// 准备缓冲区数据
stream:=TMemorystream.Create;
stream.writeBuffer(KunStreamBlock,SizeOf (KunStreamBlock));
TCPClient1.WriteStream(stream,true,true,SizeOf (KunStreamBlock)); FreeAndNil(stream);
FreeAndNil(KunStreamBlock.Stream);服务端:
procedure TForm1.TCPServer1Execute(AThread: TIdPeerThread);
var stream:Tmemorystream;
KunStreamBlock:TKunStreamBlock;
begin
try
if not AThread.Terminated and AThread.Connection.Connected then
begin
stream := TMemoryStream.Create;
AThread.Connection.ReadStream(stream,-1);
stream.Position := 0;
stream.ReadBuffer(KunStreamBlock,sizeof(KunStreamBlock));
Edit1.Text:=KunStreamBlock.stype+'->'+KunStreamBlock.Command;
RichEditServer.Lines.LoadFromStream(KunStreamBlock.Stream);
FreeAndNil(stream);
end;
except
end;
如果客户端和服务端是在同一个程序里面是没有问题,可以接收全部数据,但是单服务端是另外的程序就接收不到数据了
TKunStreamBlock= record
stype,
Command:string[100];
Stream:Tmemorystream;
end;
其中stream存放的是图片和文字的内容的流,问题是现在怎样发送到服务端中去,下面的代码在服务端可以收到Stype和Command的值,但是Stream的值不能收到
客户端:
KunStreamBlock.stype:='MSG';
KunStreamBlock.Command:='SEND';
KunStreamBlock.Stream:=TmemoryStream.create;
RichEditClient.Lines.SaveToStream(KunStreamBlock.Stream);
KunStreamBlock.Stream.Position:=0;
// 准备缓冲区数据
stream:=TMemorystream.Create;
stream.writeBuffer(KunStreamBlock,SizeOf (KunStreamBlock));
TCPClient1.WriteStream(stream,true,true,SizeOf (KunStreamBlock)); FreeAndNil(stream);
FreeAndNil(KunStreamBlock.Stream);服务端:
procedure TForm1.TCPServer1Execute(AThread: TIdPeerThread);
var stream:Tmemorystream;
KunStreamBlock:TKunStreamBlock;
begin
try
if not AThread.Terminated and AThread.Connection.Connected then
begin
stream := TMemoryStream.Create;
AThread.Connection.ReadStream(stream,-1);
stream.Position := 0;
stream.ReadBuffer(KunStreamBlock,sizeof(KunStreamBlock));
Edit1.Text:=KunStreamBlock.stype+'->'+KunStreamBlock.Command;
RichEditServer.Lines.LoadFromStream(KunStreamBlock.Stream);
FreeAndNil(stream);
end;
except
end;
如果客户端和服务端是在同一个程序里面是没有问题,可以接收全部数据,但是单服务端是另外的程序就接收不到数据了
解决方案 »
- Delphi中如何发送ARP数据包?
- 帮忙??我急需实现把sql表转换成Excel表,,!!!在线!!!
- 如何在CALL STACK中显示消息处理流程?
- 请叫一个不难的算法问题
- 急!在线等待,请进来看看……
- 那位大虾有windows2000注册表的资料?(半年没有做编程现在总算回来了,给兄弟们结贴!!!!!!)
- 请大家热心一点帮帮忙吧:数据库问题,数据库问题
- 怎样利用udl联接数据库
- 大家好,我用Access数据库,用ADOTable控件做联接,但是为什么不能显示备注类型的字段???
- cg:《利用未公开函数实现Shell操作监视》的问题
- delphi 中dbchart共坐标轴问题
- 请问怎么修改DLL文件?谢谢
可以单独发送stream,即先发送结构(包含流长度),再发送流,读取时先读取结构,再根据长度读取相应的stream