【发布时间】:2012-10-26 05:24:20
【问题描述】:
我在我的 Linux 机器中配置了 2 个以太网接口。 假设接口 A 和接口 B。
我正在编写一个 tcp 客户端套接字程序,需要在定义的接口上发送数据包。
例如。
./client -intf 接口 A/B
如果输入是接口A,那么客户端只能通过接口A发送数据包,反之亦然。
谁能提供一些关于如何实现这一点的提示?
提前致谢!!!
【问题讨论】:
我在我的 Linux 机器中配置了 2 个以太网接口。 假设接口 A 和接口 B。
我正在编写一个 tcp 客户端套接字程序,需要在定义的接口上发送数据包。
例如。
./client -intf 接口 A/B
如果输入是接口A,那么客户端只能通过接口A发送数据包,反之亦然。
谁能提供一些关于如何实现这一点的提示?
提前致谢!!!
【问题讨论】:
您可以在调用connect() 之前使用bind() 将您的客户端套接字绑定到特定的IP 地址。您可以使用getifaddrs() 列出接口及其关联的 IP 地址。
【讨论】:
getifaddrs() 查找从接口名称到IP 地址的映射。创建一个sockaddr_in / sockaddr_in6 结构,其中包含要使用的接口的IP 地址和端口0,然后在调用connect() 之前将其传递给套接字上的bind()。
connect(),正常。
【讨论】: