Sockets 连接到Web服务器时使用特定接口的TCP客户端

Sockets 连接到Web服务器时使用特定接口的TCP客户端,sockets,tcp,interface,client,bind,Sockets,Tcp,Interface,Client,Bind,我正在尝试通过Linux连接。我的设备连接到两个具有不同网络的局域网(例如eth0和eth1) 两个网络都连接到internet。我希望我的客户端程序能够使用eth1,即使我的eth0是默认接口 有一个选项setsockopt(SO_BINDTODEVICE)可以绑定到特定接口,但需要根权限,这是不可能的 绑定到eth1的IP地址也没有帮助。请建议是否有其他方法通过socket API将连接链接到接口。i、 e.我的客户端程序将始终使用eth1源IP和接口连接到internet,而所有其他程序将

我正在尝试通过Linux连接。我的设备连接到两个具有不同网络的局域网(例如eth0和eth1)

两个网络都连接到internet。我希望我的客户端程序能够使用eth1,即使我的eth0是默认接口

有一个选项setsockopt(SO_BINDTODEVICE)可以绑定到特定接口,但需要根权限,这是不可能的

绑定到eth1的IP地址也没有帮助。请建议是否有其他方法通过socket API将连接链接到接口。i、 e.我的客户端程序将始终使用eth1源IP和接口连接到internet,而所有其他程序将继续使用eth0作为常用接口

我调查了一下,发现路由表中的更改在这方面有所帮助,但尽量避免使系统不稳定的风险,因为这也适用于其他所有程序

提前谢谢。
Kris

对于基于IP(TCP或UDP)的套接字,在调用
connect()
之前将接口的本地IP地址传递给
bind()
,是正确且首选的方法。但是,将
SO_BINDTODEVICE
与接口的设备名称一起使用也应该可以。如果两者都不起作用,那么你就做错了。请显示您的实际代码。当然,没有其他方法可以做到这一点。你必须告诉我们“不帮助”的确切含义。