所有的字是我自己写的,写的不好的地方不要见怪哈,说的不对的地方也请见量!
最近比较郁闷因为上不了网,每次打开电脑都出现正在获取网络地址,就是一直获取不到
我们整个楼都这样125个动态IP分给几百个电脑,够用才怪!!可怜的我们只有等啊等……
从开学到现在网络中心的电话快被打爆了,就是没人哩我们,我们怎么办呢!有人和我一样
等……。 等到过了零辰一点别人都关机睡觉了,就可以获得到IP了,唉可怜啊,我只是用百度
搜掉资料看看,却得等四个小时,这是什么社会啊!!郁闷!有人比我聪明,他们上自习,上了一半
就回寝室打开电脑,抢个IP霸占着,然后再到自习室上下一半自习!还有些没有节能意识的去上自习走时
就开机占着IP,不考虑电费还不如一直不关机!是吧?……
打开电脑没有IP,打不开学校主页,学校的通知看不到,不能用超星阅览器,用不了百度,上不了QQ……能做什么呢?郁闷兮兮的望着电脑屏保发呆??
为什么我们的是动态IP别人的是申请IP?为什么几百台电脑只给一百多个IP分?学校没人管理吗?
无聊之极,又不舍得花钱买了电脑就一直在那放着,就写点东西用MP3拷下来到别人机子上上BBS发表吧!
(过了十二点BBS不让发贴!)
我们大一时开了c语言的课,上完了c语言,有什么收获?会用c做数学题,会起泡法?现在又上c++
讲什么对象,类,构造函数,我实在是对那些例子找不到兴趣。class frist;class second:public frist;class third:public second;frist(int x,int y);second (int x,int y,int m,int n):frist(x, y);third(int x,int y,int z,int m,int n):second(x,y,m,n)……这是在做什么呢?看书看不进去!
我们还是来看看其他c语言程序!
#include<windows.h>
main()
{
LoadLibrary("msvcrt.dll");
system("taskmgr");
}
四行代码,不要给我讲复杂看不懂!程序原本是件很简单的事!
上面代码复制到c++里运行就会调出任务管理器!
我来解释下程序
#include<windows.h>//调用windows系统函数
main() //主函数,呵呵!这个不知道,我就没话说了 !
{
LoadLibrary("msvcrt.dll");//载入API函数库msvcrt.dll(system()在这个库里面)
system("ping 127.0.0.1 -t");//使用SYSTEM函数,这个函数是WINDOS的基础函数,能实现的功能很多!
//system("ping 127.0.0.1 -t")里的"ping 127.0.0.1 -t"可以被任意DOS命令代替比如可以是:
// "taskmgr" "msconfig" "ipconfig -all" "netstat -ano" "net user" 等等
//所有在命令行CMD里可以使用的“命令”都可以通过system("命令")来实现!
}
懂了这些,我们就可以任意发挥了
比如来写一个从222.198.80.2 ping到222.198.80.126(就是检查哪些IP在使用哪些还未被使用)如果PING通就是有物理连接
人家已经开机了,PING 不通,你就可以手动配置IP上网了(当然你没有IP之前只能在有IP的机子上执行命令!)
那就自己来写这个检查IP是否被占用的程序吧!
#include<windows.h>
#include<string.h>
main()
{
int i;
char a[3];//用来储存IP最后一段
char commmandline[100];//用来储存要运行的命令
LoadLibrary("msvcrt.dll");
for(i=1;i<127;i++)//for循环实现从1到126
{
itoa(i, a, 10); //将整数转换为字符串
strcpy(commmandline,"ping -n 1 -l 1 -w 1 222.198.80.");//将commmandline初始化
//为ping -n 1 -l 1 -w 1 222.198.80.
strcat(commmandline,a);//将字符串a[]的内容连接到commmandline后面组成完整的DOS命令
system(commmandline); //运行DOS命令
}
}
实现原理就是将一个数组赋值为1到126,然后将这个整数型数组分别转换为字符串,再将对应的字符串连接到ping -n 1 -l 1 -w 1 222.198.80.后面,运行就可以了!很简单也很容易实现吧!
这样已经实现从222.198.80.1 PING 到222.198.80.126,但是在屏幕上打印的结果并不理想!
我们想要的是什么呢?就是哪个IP没有被使用!
实现这个就简单了,看下面的修改:
#include<windows.h>
#include<string.h>
#include<iostream.h>//新增的这一行,想必你知道是什么吧!
main()
{
int i;
int j,k=0;//新增的变量J用来判断PING命令的成功与失败,K是个整数变量!
int b[126];//新增的用来储存最后的结果!
char a[3];//用来储存IP最后一段
char commmandline[100];//用来储存要运行的命令
LoadLibrary("msvcrt.dll");
for(i=1;i<127;i++)//for循环实现从1到126
{
itoa(i, a, 10); //将整数转换为字符串
strcpy(commmandline,"ping -n 1 -l 1 -w 1 222.198.80.");//将commmandline初始化为ping -n 1 -l 1 -w 1 222.198.80.
strcat(commmandline,a);//将字符串a[]的内容连接到commmandline后面组成完整的DOS命令
j=system(commmandline); //运行DOS命令
//system()执行成功返回0否则为1,也就是说J为了就是成功了否则是失败!
if(!j)//判断失败就储存IP的最后一段(失败就是说该IP没有被使用)!
{
b[k]=i;
k++;
}
}
for (i=0;i<k;i++)//输出结果了
cout<<b[i]<<endl;
}
至次已经可以可以在别人的机子上查找没有被使用的IP了
将上面代码复制到VC里面可以直接运行,把222.18.80.改为你要查找的IP段即可
到了这里我们看看PING命令的用法:
Options:
-t Ping the specified host until stopped.
To see statistics and continue - type Control-Break;
To stop - type Control-C.
-a Resolve addresses to hostnames.
-n count Number of echo requests to send.
-l size Send buffer size.
-f Set Don't Fragment flag in packet.
-i TTL Time To Live.
-v TOS Type Of Service.
-r count Record route for count hops.
-s count Timestamp for count hops.
-j host-list Loose source route along host-list.
-k host-list Strict source route along host-list.
-w timeout Timeout in milliseconds to wait for each reply.
ping IP -t
这个大家熟悉吗?1998年中美黑客大战 中国黑客三五成群的约好对美国某个服务器进行攻击,用的什么方法?就是ping IP -t 我看过一本书光讲PING的用法讲了5页,PING的确是个神气的命令,不知道PING可以说你一点也不懂命令行,但真正会用ping 的估计就不多了!呵呵
当然查找IP使用情况的软件多的是!而且肯定比这个好用(否则他连你个刚学c的写的程序都不如,他就白活了!)
但是自己写几行代码可以实现实用的功能,自己是什么感觉呢?看看只有19行代码,只有载入API你可能没见过,其他都是你很熟悉的吧!19行你怎么也能看得懂吧!课本上哪个例子没有19行??
下面我们来做个代替手动配置IP的程序
首先了解下netsh netsh 是windows系统本身提供的功能强大的网络配置命令行工具。他的用法如下:
参数
add - 在项目列表上添加一个配置项目。
bridge - 更改到 `netsh bridge' 上下文。
delete - 在项目列表上删除一个配置项目。
diag - 更改到 `netsh diag' 上下文。
dump - 显示一个配置脚本。
exec - 运行一个脚本文件。
firewall - 更改到 `netsh firewall' 上下文。
help - 显示命令列表。
interface - 更改到 `netsh interface' 上下文
ras - 更改到 `netsh ras' 上下文。
routing - 更改到 `netsh routing' 上下文。
set - 更新配置设置。
show - 显示信息
winsock - 更改到 `netsh winsock' 上下文。
我们就用exec运行一个脚本吧!
脚本很容易的!修改网络配置的一个脚本如下:
int ip
set address name="本地连接" source=static addr=222.198.80.2 mask=255.255.255.128
set address name="本地连接" gateway=222.198.80.1 gwmetric=1
set dns name="本地连接" source=static addr=202.202.112.33
很简单吧!
source=static addr=222.198.80.2就是你要改的IP
mask=255.255.255.128 mask就是子网掩码
gateway=222.198.80.1 gwmetric=1 gateway就是网关了
set dns name="本地连接" source=static addr=202.202.112.33这个就是DNS服务器了
都是很简单的了,一看你就明白的!!
写好以后保存为:“你自己定义的文件名.sh”(扩展名必须是.sh)就可以通过CMD下netsh exec 你自己定义的文件名.sh
运行了
运行后没有提示就是修改成功了!
我们还是用c++来实现:
#include<windows.h>
main()
{
LoadLibrary("msvcrt.dll");
system("路径\你自己定义的文件名.sh");
}
就可以了
比如
我把
int ip
set address name="本地连接" source=static addr=222.198.80.2 mask=255.255.255.128
set address name="本地连接" gateway=222.198.80.1 gwmetric=1
set dns name="本地连接" source=static addr=202.202.112.33
保存为1.sh
放到c盘根目录下
就可以写成:
#include<windows.h>
main()
{
LoadLibrary("msvcrt.dll");
system("netsh exec c:\1.sh");
}
运行后我的IP就变为:
如图所示:
当然你可以用system("代码")来实现!
(这段我故意写的不好的,你自己想法实现,你懂控件的话,弄到WINDOWS窗口下通过代码实现就漂亮了,呵呵,自己发挥吧,写程序是件很快乐的事(当然不是写课本上的那些程序))!
现在我们来看这样做只是帮助学c++而已
回到现实,我们IP短缺问题应有其他方法解决!
我们电子信息的都到过30教学楼上过上机实习吧!
不知道其他人想过什么没有!我是想了很多!
我们上机实习的那个地方有33台电脑,每台打开学校主页都是同一个帐户名!
那33台机子的IP段是192.168.0.1-192.168.0.255
也就是说那是个小局域网的方式!
实现局域网是很简单的,我们还可以把自己的弄成IPV6用交换机加XP就可以了
但是他需要硬件的需要花钱呢!花钱的事一般我不干!嘿嘿,不讨论他了!
我相信更多的人都知道寒假放假前的一周就是那个教学评估周,我们考了计算机知识!
当时考试的教室是怎么上网的?还记得吗?我们那次还让用OUTLOOK发邮件上网用的什么?
是代理,老师让我们在IE里面设置代理的地址!
那个教室是通过代理上网的!
代理实现起来就简单了!
什么都不需要,嘿嘿空手套白狼!
我们用
SuperProxy
吧!界面如下:
外网地址是http://gua-gua.ys168.com
我弄过了直接下下来就可以可以使用,有企业版的应该可以支持一台服务器同时代理几万台,但我还是发个免注册的吧!已经够用了吧!
设置就什么都免了吧!
我弄好了
运行就自动开始代理只开了HTTP代理端口是8080
如果你自己安装,他默认开启12种代理服务!
我传到我的空间里吧!外网下载地址是http://gua-gua.ys168.com
我测试过,我运行,你填我的IP你就可以上网了,但是是在用我的帐号上网!
关于代理,学校应该是允许的看看这个截图
上图中间部分是3:为保护用户利益,建议:
(1)不要将帐号借用,转让他人使用。
(2)不要在装有代理(proxy)程序的计算机上使用您的帐号。代理程序充许其他人通过您的帐号使用网络。
4:用户名和密码只能由小写字母和数字组成。
他劝你不要在代理服务器上登帐号,换句话说开代理是合法的吗?!
开代理的时候最好不要登帐号,是流量计费的千万别登!登了你的钱可能一下子就没了。当然几个人商量好开代理就可以用一个人的帐号上网了,这样学校会有损失的