无线网卡发包
我用如下的程序发数据包,机器自动选择从有线网卡发出去。如果把有线网卡关掉,它就从无线网卡发了。怎样才能在不关掉有线网卡的情况下用无线网卡发包呢?
问题也可以描述为:一台计算机在多网卡的情况下,怎样从指定的网卡发包?
int main(int argc,char **argv)
{
struct addrinfo ai;
struct addrinfo *res;
char sendbuf[BUFSIZE];
int len=96;
int sockfd;
bzero(&ai,sizeof(ai));
ai.ai_flags=AI_CANONNAME;
ai.ai_family=AF_INET6;
ai.ai_socktype=0;
getaddrinfo( "ff02::1 ", NULL, &ai, &res);//写入ipv6多播地址
sockfd=socket(AF_INET6,SOCK_RAW,IPPROTO_RAW);//ipv6原始套接口,实际需要只能用原始套接口
if(sendto(sockfd,sendbuf,len,0,res-> ai_addr,res-> ai_addrlen) <0){
perror( "sendto error is ");
exit(1);
};
return 0;
}
(为提问方便,我将原来的程序进行了简化)
------解决方案--------------------bind是可以绑定IP地址和端口号...
应该是用这个吧..
ioctl多数是操作底层的东西...
------解决方案--------------------同意楼上的,用bind指定本机地址,我怎么没想到