如何通过给定设备(不是默认设备)发送数据?
可能的重复:
在Linux/Unix特定网络接口
我想在Ubuntu上写一个socket程序,我的PC中有很多网络设备。 程序会通过DeviceA向ServerA发送UDP数据包, 但在路由表中,ServerA的默认设备是DeviceB, 如何在不修改路由表的情况下通过 DevideA 发送数据包?
多谢!
/* 我使用 C 或 C++ */
/* 注意:DeviceA 是无线接口,例如:“wlan0”。 */
/* 注意:我在网上找到了一种方法 --> libnet,但它不支持无线接口。 */
Possible Duplicate:
Using a C++ TCP client socket on a specific network interface Linux/Unix
I want to write a socket program on Ubuntu, and there are many network devices in my PC.
The program will send a UDP packet to ServerA by DeviceA,
but in routing table, default device to the ServerA is DeviceB,
how do I send the packet by DevideA without modify the routing table?
Thanks a lot!
/* I use C or C++ */
/* Note: DeviceA is a wireless interface, e.g: "wlan0". */
/* Note: I found a way on internet --> libnet, but it's not support the wireless interface. */
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信您必须将
SO_BINDTODEVICE
选项与setsockopt
。代码是这样的(未经测试):
I believe you have to use the
SO_BINDTODEVICE
option withsetsockopt
. The code is something like this (untested):