首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问一个Linux系统中多IP的编程有关问题

2012-02-20 
请教一个Linux系统中多IP的编程问题Linux系统中,存在多块网卡(即有多个IP地址)。在基于UDP协议的socket网络

请教一个Linux系统中多IP的编程问题
Linux系统中,存在多块网卡(即有多个IP地址)。在基于UDP协议的socket网络编程时,套接字不指定IP地址。直接用sendto函数发送数据,数据会从哪个IP地址发送出去呢,系统对这IP的选择有什么样策略吗?系统选择哪个IP地址我们能否事先知道。请各位指教,谢谢了。下面给了个例子:
/**********************************************************/
#include <netinet/in.h>
int   main()
{
                int   sock,i;
                char   buff[100];
                struct   sockaddr_in   address;
                address.sin_family=AF_INET;
                address.sin_port=htons(5678);
                address.sin_addr.s_addr=inet_addr( "192.168.0.103 ");  
                strcpy(buff, "Good ");
                sock=socket(AF_INET,SOCK_DGRAM,0);
                if(sendto(sock,buff,500,0,(struct   sockaddr   *)&address,sizeof(address)))
                {
                                puts( "Sended! ");
                }
                close(sock);
}


[解决办法]
系统选择哪个IP地址我们能否事先知道
==========================
你可以自己控制.選擇權在你得手里
[解决办法]
如果說非要研究是哪個網卡先其作用哪麼
還是看看你linux內核種網卡驅動列表順序.
[解决办法]
来源哪里就发向哪里。
例如一个内网网卡,一个外网网卡,若是外网连接系统会用外网网卡发送,若是内网连接系统会用内网网卡发送。因此没必要管是哪个网卡发送的。
例如:
eth0:192.168.0.123
eth1:192.168.1.123
那么你发给192.168.0.103自然就是用eth0发送数据了。

热点排行