indy的IDTCPServer向IDTCPClient分段送数据,Client怎么接收?(50分)

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

yisn

Unregistered / Unconfirmed
GUEST, unregistred user!
比如截屏
server的屏幕分成几段,给Client
在书上看的是以前的ClientSocker和ServerSocket,都有事件来通知
知道indy是阻塞模式,可是很多不理解的
比如:
idTcpClient怎么知道server什么时候发送数据给它,server并不是一次性发完的啊?
用阻塞的话:
是不是要用循环或是timer?? 
还有查看说是用线程,可是不知道怎么实现?
据说indy的demo里有,可是我载了demo,全部都看过了也不知道是哪个有说server向client发送数据? 
谢谢
希望能回答得详细点,我是初学delphi,更是初学网络的东西。搞了很久了还是不明白indy怎么实现这个。
 
还有个问题:
如果要在Client端显示进度(server传送图片的进度)
怎么知道图片的大小呢? 是否从server先发送大小给client接收?
 
有协议的话就好办,比如客户发送 GETIMAGE 服务器返回图片大小,客户等待服务器发数据,服务器发送图片,有于tcp数据是无边界的,只要图片大小不超过缓存大小,应该是可以接收完全的
 
谢谢
还想问下:
有协议的话就好办
~~~~~~~~~~~~~~~~~~~~~我现在因为都是自己编server,client,知道发哪个命令,收哪个命令。那如果真要很多命令的话,而且都不是一个人编的。怎么设计这种协议会比较好呢??
如果有什么demo参考就好了...
 
如果多人开发的话,就要协商制定协议,如果数据量小,一般可以用字符串包,比如
客户端:READ<CRLF>
服务器端:1024<CRLF>
如果传输的是二进制数据,客户端发送读取命令后等待服务器返回发送数据的字节数,就知道要接收多少数据了。
主要根据需要定制协议,能保证扩展性和数据可靠性就行
 
en.. 谢谢wxfdage
 
后退
顶部