linux系统下连网络, *** 作步骤如下:
1、首先用root用户登录linux桌面系统。
2、然后点击上方的【系统】, 在下拉菜单中点击【首选项】。
3、然后点击列表里的【网络连接】。
4、然后点击“编辑”。打开“IPV4 设置”页面,选择“方法”为“手动”。
5、选择“添加”。填写自己分配的ip地址,子网掩码,网关,DNS服务器等信息,参照windows 系统填写。填写完成后,点击“应用”即可。
socket创建UDP通信描述符后,setsockopt加入多播组,再bind绑定到该网卡上//在指定的IP和端口上接收多播组的报文
int recv_msg(char *ip , unsigned short port , char *mult_ip )
{
//建立通讯套接字
int fd = socket( PF_INET , SOCK_DGRAM , 0 )
if( -1 == fd )
{
perror("socket failed")
return -1
}
//设置地址重用和接收多播
{
int reuse = 1
struct ip_mreqn mult_addr = {0}
mult_addr.imr_multiaddr.s_addr = inet_addr( mult_ip )
mult_addr.imr_address.s_addr = inet_addr( ip )
if( -1 == setsockopt( fd , IPPROTO_IP , IP_ADD_MEMBERSHIP ,
&mult_addr , sizeof(mult_addr)))
{
perror("setsockopt add failed")
goto _out
}
if( -1 == setsockopt( fd , SOL_SOCKET, SO_REUSEADDR,
&reuse , sizeof(reuse) ) )
{
perror("setsockopt reuse failed")
}
}
//绑定地址和端口
{
struct sockaddr_in addr = {0}
addr.sin_family = PF_INET
addr.sin_port = htons( port )
addr.sin_addr.s_addr = INADDR_ANY
if( -1 == bind( fd , (struct sockaddr*)&addr ,
sizeof(addr) ) )
{
perror("bind failed")
goto _out
}
}
//接收信息
while(1)
{
char buf[128] = {0}
int ret = 0
struct sockaddr_in client_addr = {0}
int len = sizeof(client_addr)
ret = recvfrom( fd , buf , sizeof(buf), 0 ,
(struct sockaddr*)&client_addr ,
&len )
//被信号中断则重启
if( (-1 == ret)&&(EINTR ==errno ))
{
continue
}
else if( -1 ==ret )
{
perror("recvfrom failed")
goto _out
}
else if( ret >0 )
{
printf("%s\n" , buf )
}
usleep( 100*1000 )
}
_out:
if( fd >= 0)
{
close( fd )
}
return 0
}
因为一个系统只允许一个默认网关,所以你的双网卡配置文件,只有一个进行配置,另一个注释掉,以软路由的方式实现双网卡网络通信正常。 *** 作如下:
1、内网卡的IP配置文件正常配置;
2、外网卡的IP配置文件网关位置去掉;
3、启动2个网卡;
4、执行路由命令添加软路由显示外网只允许指定网段通信使用外网,命令如下:
route add -net 网段 netmask 掩码 gw 外网网关以上请使用对应IP替换网段,掩码,外网网关
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)