关于TIdTCPServer和TIdTCPClient共存的问题(0分)

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

xfeiffer

Unregistered / Unconfirmed
GUEST, unregistred user!
正在做一个中间件的程序,用到了TIdTCPServer和TIdTCPClient,具体原理是Client用来收集远程服务器发回的信息,然后用Server在分发给下级的用户,但在一个工程里面用了TIdTCPServer和TIdTCPClient之后Client总是断开跟远程服务器之间的连接,在Client的读取线程里面捕获到Exception:Connection Closed Gracefully(在Client捕获到的这样的信息应该是服务器主动断开了这个Client吧,但如果光用Client来接收的话就不会出现这样的断开的情况)。
是不是TIdTCPServer和TIdTCPClient两个不能同时存在于一个工程文件里面啊(就只有一个主窗体的项目文件)?
 
可以同时使用的。
 
我也遇到了同样的问题
主要是idtcpclient要在线程里不停的读数据,而上级连接没有发数据
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3464693
 
你这个就相当于一个通讯机,起到转发数据的作用,而你的思路里正好把server和client搞反了。
 
没有搞反,我的思路很正常,远端服务器(IndyTCPServer)处理一些事务,而且会及时把处理过程和结果转给监控的计算机,所以我在远端服务器上的连接队列里面固定了用哪个IP地址来分发这个监控信息,所以我在分发记录的计算机上用了TIdTCPClient来连接远端的服务器并接收实时的监控信息,然后再通过一个Server将接受到的监控信息分发到其他的远程监控端。

[blue]远端服务器[/blue]→[red]分发记录的Client→分发记录的Server[/red]→[blue]分发[/blue]
红色字体的两个控件在一个项目文件中
 
我上周使用的IndyTCPServer做的和你差不多的程序。
这几天我修改了一下,服务器和客户端都使用indyupdserver ,觉得效果不错。不管是在局域网还是互联网上,都可以顺利实现。都使用indyupdserver 得好处是不需要客户端总是保持连接,需要发信息的时候直接发就好,只要你记录下客户端的IP和端口。
 
后退
顶部