您是否可以创建充当tcp代理服务器的中间应用程序?它将由两部分组成。 IdTCPServer和IdTCPClient。这个想法是:
应用程序>连接到IdTCPServer>所有数据都被重定向到> IdTCPClient连接到目的地。
TCPClient收到的数据将被重定向到IdTCPServer和Application。 我做了这么简单的应用程序,它在HTTP请求中工作,但是当我尝试将它用于RDP客户端时它失败了(我收到错误,即协议错误)。它甚至可能吗?我使用ReadByte方法,并将每个单字节发送到另一个IOHandler。
我想创建某种虚拟tcp通道,允许通过NAT进行连接。
我不太清楚。我想要实现的是这样的:
RDP服务器< IdTCPClient<> IdTCPclient> NAT> IdTCPServer< RDPClient。
答案 0 :(得分:4)
应用程序>连接到IdTCPServer>所有数据都被重定向到> IdTCPClient连接到目的地。
TCPClient收到的数据将被重定向到IdTCPServer和Application。
事实上,Indy有一个专门用于此目的的组件 - TIdMappedPortTCP
。
将其MappedHost
和MappedPort
属性设置为指向目标目标,然后将其激活,并且所有入站连接将自动定向到目标,并且数据在两个方向上来回传递。
答案 1 :(得分:2)
我打算只添加评论,但没有足够的积分。 您的请求说您要“重定向”,Remy为此提供了答案。
但是,您的描述听起来像是想要自己传递数据(中间人)。 RDP contains some guards against that,虽然早期版本可能更加开放。
如果实际重定向不是您要查找的内容,您可能需要更严格地指定问题。