我正在使用Delphi XE3和Indy 10 (idTCPServer和idTCPClient)创建一个客户端服务器应用程序。
服务器端将显示所有连接的客户端,我可以选择列表中的一些客户端并发送命令或流/文件。为此,我创建了一个消息队列,由Remy先生支持。以下是我正在做的事情:

我想知道的是:
顺便说一下,我找不到这方面的任何好例子(Indy 10 TCP通讯),使用队列,错误处理等。在印第的网站上有很多坏链接。你能给我一个有好例子的网站吗?
谢谢你的帮助!
发布于 2015-07-30 15:43:36
当一方开始读/写时,它期望另一方写/读?如果对方不能呢?如果服务器请求一个文件,但它不存在,客户端必须编写一个“空”流来避免问题吗?
让客户端发送回复,接受/拒绝请求,然后才能传输文件。还让接收方在传输完成后发送回复,以便发送方知道整个文件是否已在接收方端接收到。
Server: I will send a file
Client: OK
Server: FileStream
Client: OK
Server: Send me a file
Client: OK
Client: FileStream
Server: OK
Server: I will send a file
Client: Not Ready
Server: Send me a file
Client: Not Found
Server: Send me a file
Client: OK
Client: FileStream (error midway)
Server: FAILED尽管如此,由于您的服务器是向客户端发送命令的服务器,所以可以考虑在客户端而不是在TIdCmdTCPClient上使用TIdTCPClient。这将为您提供一个接收服务器命令的专用线程,您可以为您的命令创建OnCommand处理程序,并使用提供的TIdCommand对象发送回复。
考虑使用TIdTCPConnection.SendCmd()方法发送命令并读取它们的初始响应,使用TIdTCPConnection.GetResponse()读取最终响应。
https://stackoverflow.com/questions/31719248
复制相似问题