3

我有一个运行 TIdTCPServer 的服务器,客户端使用 Web 浏览器(或任何其他软件)进行通信,我不知道协议,但我想做的是在客户端和另一个连接之间发送数据(都连接到同一个 TIdTCPServer)例如,第一个客户端发送的数据被传输到第二个客户端,第二个客户端发送的数据被传输到第一个客户端,就像代理一样(我不能真正使用代理服务器,因为它只是这个条件)和TIdTCPServer 应该仍在接收其他客户端并处理它们的数据。

我偶然发现了第一行代码,因为 TIdContext.Connection.Socket.ReadLn 需要分隔符,并且服务器不知道客户端的协议。

有任何想法吗?

谢谢。

4

1 回答 1

3

您可以查看源代码TIdMappedPortTCPTIdHTTPProxyServer了解它们如何在两个方向的连接之间传递任意数据。这两个组件都TIdSocketList.SelectReadList()用于检测任一连接何时有数据要读取。 TIdMappedPortTCP然后使用TIdBuffer.ExtractToBytes()and TIdIOHandler.Write(TIdBytes),而TIdHTTPProxyServer使用TIdTCPStreamandTIdBuffer.ExtractToStream()代替。

于 2011-03-07T00:04:42.523 回答