我有一个Debian / linux服务器,它有几个IP地址,都分配给同一个物理网卡. / etc / network / interfaces配置文件如下所示(xx代表数字)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 176.xx.xx.144
netmask 255.255.255.0
network 176.xx.xx.0
broadcast 176.xx.xx.255
gateway 176.xx.xx.254
auto eth0:0
allow-hotplug eth0:0
iface eth0:0 inet static
address 46.xx.xx.57
netmask 255.255.255.255
broadcast 46.xx.xx.57
auto eth0:1
allow-hotplug eth0:1
iface eth0:1 inet static
address 94.xx.xx.166
netmask 255.255.255.255
broadcast 94.xx.xx.166
//IPv6 Stuff...
我正在使用Boost Asio处理所有网络连接的客户端应用程序.在此应用程序中,我希望能够使用特定的网络接口/ IP地址连接到外部服务器.我发现this类似的问题,但只是将boost :: asio :: ip :: tcp :: socket绑定到一个specfic端点,然后连接到外部服务器不起作用.这是我尝试过的最小工作示例:
#include PHP HTTP/1.1\r\nHost: haatschii.de\r\nAccept: */*\r\n\r\n",57));
//Parse server response (not important for this code example)
return 0;
}
当我在我的服务器上运行时,我得到:
Before binding socket has local endpoint: 0.0.0.0:0
Before connecting socket has local endpoint: 94.xx.xx.166:38399
After connecting socket has local endpoint: 176.xx.xx.144:45959
External server says we are using IP: 176.xx.xx.144
现在我有点迷茫,因为我不知道还有什么可以尝试.我不一定需要一个可移植的解决方案,任何适用于这个Debian设置的东西都可以.
更新
我将为我的设置提供解决方案.如有必要,我可以更改/ etc / network / interfaces配置文件.但是,为了重用我的代码,任何解决方案都必须使用Boost Asio套接字(至少作为包装器).