【发布时间】:2011-07-09 09:29:17
【问题描述】:
我有一个运行 TIdTCPServer 的服务器,客户端使用 Web 浏览器(或任何其他软件)进行通信,我不知道协议,但我想做的是在客户端和另一个连接(都连接到相同的 TIdTCPServer)例如第一个客户端发送的数据被传输到第二个客户端,第二个客户端发送的数据被传输到第一个客户端,就像代理一样(我不能真正使用代理服务器,因为它只是这个条件)并且 TIdTCPServer 应该仍在接收其他客户端并处理它们的数据。
我偶然发现了第一行代码,因为 TIdContext.Connection.Socket.ReadLn 需要一个分隔符,并且服务器不知道客户端的协议。
有什么想法吗?
谢谢。
【问题讨论】:
-
也许 Indy 中的 TIdMappedPortTCP 组件会有所帮助,但需要进行一些修改 - 请参阅 stackoverflow.com/questions/4136226/proxy-server-using-indy
-
当遇到同样的问题时,我使用了ICS - The Internet Component Suite 组件:与 Indy 不同,它们不会阻塞,因此您可以轻松地同时接收和发送。
-
我不能使用 TIedMppedPortTCP 因为它实际上是一个服务器,有很多功能,提供信息和东西,而这只是服务器内部的一个功能,可以将客户端带到另一个客户端,我不能移动到ICS 因为我在做跨平台开发:(
标签: delphi sockets delphi-7 indy10