我正在使用 Delphi 10.2东京。我有4个互联网资源与4个局域网。我想使一个程序使用TNetHttpClient。我如何引导它使用一个特定的互联网资源?
shstlldc1#
不幸的是,TNetHttpClient不提供将其绑定到特定LAN的能力,如果需要此功能,则必须找到另一个可以实现此功能的HTTP库。
TNetHttpClient
更新日期:
在做了一些阅读之后,发现至少在Windows上,为 * 出站 * 连接绑定套接字只为套接字的数据包设置源IP,但在Vista之前,用于建立IPv4连接的实际适配器完全由Windows的路由表确定,应用程序不能 * 强制 * 使用特定的IPv4适配器。而对于Vista+上的IPv4通信,将套接字绑定到特定适配器在大多数情况下都应该有效。Q175396: Windows Socket Connection from a Multiple-Homed ComputerStrong and Weak Host ModelsUsing a specific network interface for a socket in windows例如,Indy的TIdHTTP有一个公共的BoundIP属性,用于将其套接字绑定到网络接口的IP(在需要接口名称的平台上,可以使用TIdHTTP.OnSocketAllocated或TIdHTTP.OnAfterBind事件调用TIdHTTP.Socket.Binding.SetSockOpt()方法,例如在Linux上使用SO_BINDTODEVICE选项)。
TIdHTTP
BoundIP
TIdHTTP.OnSocketAllocated
TIdHTTP.OnAfterBind
TIdHTTP.Socket.Binding.SetSockOpt()
SO_BINDTODEVICE
1条答案
按热度按时间shstlldc1#
不幸的是,
TNetHttpClient
不提供将其绑定到特定LAN的能力,如果需要此功能,则必须找到另一个可以实现此功能的HTTP库。更新日期:
在做了一些阅读之后,发现至少在Windows上,为 * 出站 * 连接绑定套接字只为套接字的数据包设置源IP,但在Vista之前,用于建立IPv4连接的实际适配器完全由Windows的路由表确定,应用程序不能 * 强制 * 使用特定的IPv4适配器。而对于Vista+上的IPv4通信,将套接字绑定到特定适配器在大多数情况下都应该有效。
Q175396: Windows Socket Connection from a Multiple-Homed Computer
Strong and Weak Host Models
Using a specific network interface for a socket in windows
例如,Indy的
TIdHTTP
有一个公共的BoundIP
属性,用于将其套接字绑定到网络接口的IP(在需要接口名称的平台上,可以使用TIdHTTP.OnSocketAllocated
或TIdHTTP.OnAfterBind
事件调用TIdHTTP.Socket.Binding.SetSockOpt()
方法,例如在Linux上使用SO_BINDTODEVICE
选项)。