C++编程实现所有DOS命令,只有四行代码

原文


所有的字是我自己写的,写的不好的地方不要见怪哈,说的不对的地方也请见量!
最近比较郁闷因为上不了网,每次打开电脑都出现正在获取网络地址,就是一直获取不到
我们整个楼都这样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:用户名和密码只能由小写字母和数字组成。
他劝你不要在代理服务器上登帐号,换句话说开代理是合法的吗?!
开代理的时候最好不要登帐号,是流量计费的千万别登!登了你的钱可能一下子就没了。当然几个人商量好开代理就可以用一个人的帐号上网了,这样学校会有损失的
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值