非常急!各位高手请帮忙了!谢谢谢谢!!!(200分)

  • 主题发起人 主题发起人 xishu
  • 开始时间 开始时间
X

xishu

Unregistered / Unconfirmed
GUEST, unregistred user!

Delphi版本为6.0
目的:Client和Server通信,数据包协议为TCP/IP,数据包内容格式为XML。
做法:使用组件TXMLDocument来组XML数据包及解XML数据包。在Client端新建一个TXMLDocument,LoadfromFile获得一个XML文件的内容,再用SavetoStream把XML内容保存到流中,用Socket的SendStream把流发送出去,Server端收到后再用TXMLDocument来解析。

有关源码:
function TForm1.WriteXMLtoMediaServer: Boolean;
var
xmlstream: TStream;
begin
xmlstream := TMemoryStream.Create;
xmlstream.Size := 1000;
XMLDocument1.LoadfromFile('c:/Output.xml');
XMLDocument1.SaveToStream(xmlstream);
ClientSocket1.Socket.SendStream(xmlstream);
end;

代码很简单,但ServerSocket1的OnClientRead一直没有反应。
1. 连接肯定建立,把ClientSocket1.Socket.SendStream(xmlstream)用ClientSocket1.Socket.SendText('aaa')替换,Server马上收到!
2. xmlstream.Size := 1000;这句话有没有效果都一样。

是xmlstream中没有内容没有保存下来?为什么?
是SaveToStream和Socket.SendStream使用的流格式不同?该如何使用?
还是其他的??

非常急!各位高手请千万帮忙了!
谢谢谢谢!!!
十分感谢!!!
千分感谢!!!
万分感谢!!!
 
sendstream要用socket.ReceiveBuf()

接收。你看看你自己用什么接收的
 
OnClientRead事件是否响应跟里面的代码有关系吗?

我在OnClientRead设了断点,没走到。并不是说响应了没收下来。
 

OnClientRead事件是否响应跟发出的包是否为空有关。

如果是ClientSocket1.Socket.SendText('aaa'),Server端的OnClientRead事件就有响应;
如果是ClientSocket1.Socket.SendText(''),Server端的OnClientRead事件就没有响应。

应该这样说,空包Client端就根本不会发出去。
 
急!!!
 
后退
顶部