我在我的Linux机器上配置了2个以太网接口。 可以说接口A和接口B.在定义的以太网接口上发送数据包
我在写一个tcp客户端套接字程序,需要在定义的接口上发送数据包。
例如。
./client -intf接口A/B
如果输入是接口A,那么客户端仅具有经由接口A和反之亦然发送数据包。
任何人都可以提供一些关于如何实现这一点的提示。
在此先感谢!
我在我的Linux机器上配置了2个以太网接口。 可以说接口A和接口B.在定义的以太网接口上发送数据包
我在写一个tcp客户端套接字程序,需要在定义的接口上发送数据包。
例如。
./client -intf接口A/B
如果输入是接口A,那么客户端仅具有经由接口A和反之亦然发送数据包。
任何人都可以提供一些关于如何实现这一点的提示。
在此先感谢!
您可以使用bind()
你叫connect()
之前,您的客户端套接字绑定到特定的IP地址。您可以使用getifaddrs()
列出接口及其关联的IP地址。
之前必须做类似的事情,你试过这个吗? https://austinmarton.wordpress.com/2011/09/14/sending-raw-ethernet-packets-from-a-specific-interface-in-c-on-linux/
我已经看到了这个。我需要更多的信息。如果我不提供接口名称,我的应用程序必须使用默认路由。如何实现这个我不给接口名称。? – Saravana
你好,感谢您的输入。你能否提供更多的信息。 – Saravana
@Saravana:调用'getifaddrs()'来查找从接口名称到IP地址的映射。使用要使用的接口的IP地址和端口0创建一个'sockaddr_in' /'sockaddr_in6'结构,并在调用'connect()'之前将其传递给套接字上的'bind()'。 – caf
非常感谢你的咖啡。所以在绑定中,我们绑定到IP接口的IP地址。但我们应该在哪里提供实际需要连接的服务器IP? – Saravana