【问题标题】:Sending packets on a defined Ethernet Interface在定义的以太网接口上发送数据包
【发布时间】:2012-10-26 05:24:20
【问题描述】:

我在我的 Linux 机器中配置了 2 个以太网接口。 假设接口 A 和接口 B。

我正在编写一个 tcp 客户端套接字程序,需要在定义的接口上发送数据包。

例如。

./client -intf 接口 A/B

如果输入是接口A,那么客户端只能通过接口A发送数据包,反之亦然。

谁能提供一些关于如何实现这一点的提示?

提前致谢!!!

【问题讨论】:

    标签: c sockets packets


    【解决方案1】:

    您可以在调用connect() 之前使用bind() 将您的客户端套接字绑定到特定的IP 地址。您可以使用getifaddrs() 列出接口及其关联的 IP 地址。

    【讨论】:

    • 您好,感谢您的意见。您能否提供更多信息。
    • @Saravana:调用getifaddrs() 查找从接口名称到IP 地址的映射。创建一个sockaddr_in / sockaddr_in6 结构,其中包含要使用的接口的IP 地址和端口0,然后在调用connect() 之前将其传递给套接字上的bind()。
    • 非常感谢咖啡馆。所以在 bind 中,我们绑定到 Ip 接口的 ip 地址。但是我们应该在哪里提供它实际需要连接的服务器IP?。
    • @Saravana:在connect(),正常。
    【解决方案2】:

    【讨论】:

    • 我见过这个。我需要更多信息。如果我不提供接口名称,我的应用程序必须使用默认路由。我没有给出接口名称如何实现?
    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    相关资源
    最近更新 更多