运行TIdTCPServer的服务器,以及使用Web浏览器(或任何其他软件)进行通信的客户端,我不知道协议,但我想要做的是在客户端和另一个连接之间发送数据(两者都连接到相同的TIdTCPServer)例如,第一个客户端发送的数据被传输到第二个客户端,第二个客户端发送的数据被传输到第一个客户端,就像代理一样(我真的不能使用代理服务器,因为它就是这个条件)并且TIdTCPServer仍应接收其他客户端并处理其数据。
我偶然发现了第一行代码,因为TIdContext.Connection.Socket.ReadLn需要一个分隔符,而服务器不知道客户端的协议。
任何想法?
感谢。
答案 0 :(得分:3)
您可以查看TIdMappedPortTCP
和TIdHTTPProxyServer
的源代码,了解它们如何在两个方向上的连接之间传递任意数据。两个组件都使用TIdSocketList.SelectReadList()
来检测何时连接有数据要读取。 TIdMappedPortTCP
然后使用TIdBuffer.ExtractToBytes()
和TIdIOHandler.Write(TIdBytes)
,而TIdHTTPProxyServer
则使用TIdTCPStream
和TIdBuffer.ExtractToStream()
。