|
楼主 |
发表于 2007-5-21 12:06:43
|
显示全部楼层
Post by x11
如果是tcp/ip,你没必要自己选择接口,应该由系统根据路由表自动选择
如果不是tcp/ip,那么是什么?说来听听
多谢~
是tcp/ip,我这里有一个比较特殊的应用,不希望系统自动选择,有没有自己选择接口的方法呢?
刚才搜索到一个解决方案,是解决raw的,不知道能不能用在tcp/ip上:
我写的程序使用raw_socket。是不是将socket通过函数bind绑定指定网卡的IP就能通过该网卡发送数据? >>
>>
>>指定网卡发送数据的时候不需要指定网卡IP,只要设置struct ifreg ifr.ifr_name就可以了。
>>例如:
>> struct ifreq ifr;
>> fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
>> memset(&ifr, 0, sizeof (ifr));
>> strncpy(ifr.ifr_name, device, sizeof (ifr.ifr_name) -1);
>> ifr.ifr_name[sizeof(ifr.ifr_name) - 1] = '\0';
>> if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0 )
>> {
>> snprintf(err_buf, ERRBUF_SIZE,
>> "SIOCGIFHWADDR: %s", strerror(errno));
>> return -1;
>> } |
|