LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 814|回复: 8

网络配置之后总需要"解除->激活"之后才能用,咋办

[复制链接]
发表于 2004-8-31 16:56:18 | 显示全部楼层 |阅读模式
在程序中设置了IP或者MASK等,同时也更改了相应的文件,ifconfig显示已经成功更改相关项,ping网关也能通,打开网页就不行了,报告"network problem",我在程序中设置IP之后使用了
          ifr.ifr_flags|=IFF_UP;
          ioctl(fd,SIOCSIFFLAGS,&ifr);
试图激活不能成功,在网络配置中先"解除"再"激活"之后就可以用了,请问应该用什么语句来正确激活呢.先谢谢了.
发表于 2004-8-31 21:47:45 | 显示全部楼层
如果修改了网络配置,用
/etc/init.d/net.eth0 restart
重启网络

ps:没大看明白你的问题
 楼主| 发表于 2004-9-1 16:23:17 | 显示全部楼层
不是用脚本,是在C中用函数ioctl实现IP,NETMASK等的设置,ifconfig显示的的确是设置后的参数,但是用浏览器打开网页会报错,需要通过XWINDOW中网络设置来重新激活,这些配置的参数才起效,就能打开网页了,我是想说,如何在程序中设置IP,NETMASK等之后用什么语句来实现激活的功能,直接就让设置的参数起效,而不需要通过网络设置来重新激活.
发表于 2004-9-2 08:12:34 | 显示全部楼层
听不懂你的意思

service network restart 不行吗 ?
发表于 2004-9-2 12:30:00 | 显示全部楼层
找ifconfig的源码瞧瞧
发表于 2004-9-2 12:36:40 | 显示全部楼层
不懂写进配置难道不行么?
 楼主| 发表于 2004-9-4 11:18:40 | 显示全部楼层
是在C语言中实现的,我用的RH9.0,如通过
语句ioctl(int,SIOCSIFADDR,....)实现了对IP地址的更改(用ifconfig命令查看到地址确实更改了),并且也对配置文件进行了更改(系统设置---->网络,可以看到IP地址已更改)此时用浏览器浏览网页报错,通过系统设置--->网络--->设备,本来设备状态是活跃状态,但必需先解除,再激活,浏览器就能正常工作了.
问题:如何在程序中语句ioctl(int,SIOCSIFADDR,....)之后添加某条语句实现"系统设置--->网络--->设备,本来设备状态是活跃状态,但必需先解除,再激活"这一步工作????我用过ioctl(int,SIOCSIFFLAGS,....)设置flags为IFF_UP想实现此功能,但是不行,IFF_UP/IFF_DOWN是用来控制什么的???正确的该用哪个语句???????
这回清楚了吗??
 楼主| 发表于 2004-9-7 21:50:35 | 显示全部楼层
我顶上去
 楼主| 发表于 2004-9-18 16:42:49 | 显示全部楼层
不得已,我只好用system("ifup eth0")搞定了,只是完成这条语句延迟了两秒,感觉到明显的停顿,唉.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表