Delphi 如何使TIdIMAP4支持socks 4/5代理?
Indy软件包的TidIMAP4客户端不支持socks 4/5代理,添加该支持的可能方法是什么?Indy已经有一个内置框架,用于通过代理连接任何TCP客户端组件。您只需将所需的代理组件附加到客户端组件,然后客户端将自动连接到代理并告诉它连接到何处。如果需要通过多个代理进行连接,则可以链接代理组件 默认情况下,Indy 10为SOCKS 4/4a/5代理提供了两个代理组件—Delphi 如何使TIdIMAP4支持socks 4/5代理?,delphi,indy,indy10,Delphi,Indy,Indy10,Indy软件包的TidIMAP4客户端不支持socks 4/5代理,添加该支持的可能方法是什么?Indy已经有一个内置框架,用于通过代理连接任何TCP客户端组件。您只需将所需的代理组件附加到客户端组件,然后客户端将自动连接到代理并告诉它连接到何处。如果需要通过多个代理进行连接,则可以链接代理组件 默认情况下,Indy 10为SOCKS 4/4a/5代理提供了两个代理组件—TIdSocksInfo,为HTTP代理提供了tidconnectthroughttpproxy(使用HTTPCONNECT方
TIdSocksInfo
,为HTTP代理提供了tidconnectthroughttpproxy
(使用HTTPCONNECT
方法)。但该框架具有足够的通用性,如果需要实现其他代理协议,则可以派生新类
在您的情况下,在连接到服务器之前,为
TIdIMAP4.IOHandler
属性分配TIdIOHandlerStack
组件,然后将TIdSocksInfo
组件分配给TIdIOHandlerStack.TransparentProxy
属性,然后根据需要配置TIdSocksInfo
。所有这些都可以在设计时或运行时完成。Indy已经有一个内置框架,用于通过代理连接任何TCP客户端组件。您只需将所需的代理组件附加到客户端组件,然后客户端将自动连接到代理并告诉它连接到何处。如果需要通过多个代理进行连接,则可以链接代理组件
默认情况下,Indy 10为SOCKS 4/4a/5代理提供了两个代理组件—TIdSocksInfo
,为HTTP代理提供了tidconnectthroughttpproxy
(使用HTTPCONNECT
方法)。但该框架具有足够的通用性,如果需要实现其他代理协议,则可以派生新类
在您的情况下,在连接到服务器之前,为
TIdIMAP4.IOHandler
属性分配TIdIOHandlerStack
组件,然后将TIdSocksInfo
组件分配给TIdIOHandlerStack.TransparentProxy
属性,然后根据需要配置TIdSocksInfo
。所有这些都可以在设计时或运行时完成。Indy已经有一个内置框架,用于通过代理连接任何TCP客户端组件。您只需将所需的代理组件附加到客户端组件,然后客户端将自动连接到代理并告诉它连接到何处。如果需要通过多个代理进行连接,则可以链接代理组件
默认情况下,Indy 10为SOCKS 4/4a/5代理提供了两个代理组件—TIdSocksInfo
,为HTTP代理提供了tidconnectthroughttpproxy
(使用HTTPCONNECT
方法)。但该框架具有足够的通用性,如果需要实现其他代理协议,则可以派生新类
在您的情况下,在连接到服务器之前,为
TIdIMAP4.IOHandler
属性分配TIdIOHandlerStack
组件,然后将TIdSocksInfo
组件分配给TIdIOHandlerStack.TransparentProxy
属性,然后根据需要配置TIdSocksInfo
。所有这些都可以在设计时或运行时完成。Indy已经有一个内置框架,用于通过代理连接任何TCP客户端组件。您只需将所需的代理组件附加到客户端组件,然后客户端将自动连接到代理并告诉它连接到何处。如果需要通过多个代理进行连接,则可以链接代理组件
默认情况下,Indy 10为SOCKS 4/4a/5代理提供了两个代理组件—TIdSocksInfo
,为HTTP代理提供了tidconnectthroughttpproxy
(使用HTTPCONNECT
方法)。但该框架具有足够的通用性,如果需要实现其他代理协议,则可以派生新类
在您的情况下,在连接到服务器之前,为
TIdIMAP4.IOHandler
属性分配TIdIOHandlerStack
组件,然后将TIdSocksInfo
组件分配给TIdIOHandlerStack.TransparentProxy
属性,然后根据需要配置TIdSocksInfo
。所有这些都可以在设计时或运行时完成。太好了!谢谢你,雷米。还有一件事-有没有直接的方法让TIdSocksInfo使用系统的代理设置?没有。没有“系统代理设置”这样的东西。即使有,它也将高度依赖于平台。也许您正在考虑WinInet自己的全局代理设置?这不是全系统的。您必须向WinInet本身询问该设置。否则,您可以使用诸如Web代理自动发现(WPAD)之类的协议来检测网络上的代理。但是无论哪种方式,您都必须根据需要将相关值分配给TIdSocksInfo
。很抱歉,直到今天我才开始实现socks5。。。因此,我尝试了,并意识到我的TidImap4已经有了一个IOHandler
-TidsLioHandlerSocketOpenSSL
,在这个案例中,如何与另一个IOHandlerStack
连锁?谢谢。@EdwinYipTransparentProxy
属性由TIdIOHandlerSocket
公开,而TIdIOHandlerStack
和TIdSSLIOHandlerSocketOpenSSL
都是从中派生出来的。现在,您可以将tidsliohandlersocketopenssl
与tidsliohandlersocketopenssl一起使用。太好了!谢谢你,雷米。还有一件事-有没有直接的方法让TIdSocksInfo使用系统的代理设置?没有。没有“系统代理设置”这样的东西。即使有,它也将高度依赖于平台。也许您正在考虑WinInet自己的全局代理设置?这不是全系统的。你得问问WinInet