java实现笔记本电脑设置成WiFi热点

     首先,现在手机越来越依赖WiFi而存活,因为无论是2G还是2G根本无法满足客户对于手机上网的追求,而wifi热点就成为了很对人的最爱,我写了个简单的代码实现了简单的在自己的笔记本上建立wifi热点的功能(win7系统方可)。

     首先我们必须要有一个简单的界面,这自然不必多说,然后我们便要在电脑上启用并设定虚拟WiFi网卡,这其实是利用java调用命令提示符来实现的,也就是cmd。此命令有三个参数:

mode:是否启用虚拟WiFi网卡,改为disallow则为禁用,要是启用wifi热点我们就要设置为allow。

ssid:无线网名称。

key:无线网密码,需八个以上字符。

//定义一个设置wifi名字与密码的方法
	public void setWiFi(){
		try 
        {
			Process child=Runtime.getRuntime().exec("netsh wlan set hostednetwork mode=allow ssid="+jtname.getText()+" key="+jtpass.getText());
			writeId(jtname.getText(),jtpass.getText());
            InputStream in=child.getInputStream();
            int c=0;
            while(c!=-1)
            {
                c=in.read();
            }
            in.close();
            try 
            {
                child.waitFor();
            } 
            catch (InterruptedException en) 
            {
                en.printStackTrace();
            }
        } 
        catch (IOException ef) 
        {
            ef.printStackTrace();
        }
		}

 通过该方法,我们还能设置wifi的名字和密码,起名字和密码是从界面上的文本框中获得的。

接着我们要将这wifi名字和密码存入文件中,以便在下次登录时等记住上回的wifi名字和密码,不用用户从新设置,当然入户也可以选择从新设置wifi名字和密码。

//定义一个将wifi名字和密码写入指定文件中保存起来
	public void writeId(String str,String str2){
		try {
		 File file = new File("src/WiFi/name.txt");// 指定要写入的文件   
		 if(!file.exists()){
				try {
					file.createNewFile();
					file.renameTo(new File("src/WiFi/name.txt"));
				} catch (IOException e1) {
				}
				bufferedWriter = new BufferedWriter(new FileWriter(file,true));  
		        // 写入信息  
		        bufferedWriter.write(str);			        
		        bufferedWriter.newLine();// 表示换行   
		        bufferedWriter.write(str2);			        
		        bufferedWriter.newLine();// 表示换行  
		        bufferedWriter.flush();// 清空缓冲区  
				
			}else{
				file.delete();
				file.createNewFile();
				file.renameTo(new File("src/WiFi/name.txt"));
				bufferedWriter1 = new BufferedWriter(new FileWriter(file,true));  
		        // 写入信息  
				bufferedWriter1.write(str);			        
		        bufferedWriter1.newLine();// 表示换行   
		        bufferedWriter1.write(str2);			        
		        bufferedWriter1.newLine();// 表示换行  
		        bufferedWriter1.flush();// 清空缓冲区  
			}
		} catch (Exception e) {
		}
	}

      wifi名字和密码都设置完毕,但是要想该wifi能连接上网络,我们还需要打开“网络和共享心”——“更改适配器设置”,应该有多出的这一项“Microsoft Virtual WiFi Miniport Adapter”的无线连接2,如果没有,则把无线网卡驱动更新一下即可。无线网卡驱动在控制面板里的“设备管理器”中,你可以将该无线连接改个名字。

接下来我们还需将笔记本中的主要网络设置为共享,即选择你目前所连接的网络连接,然后右键,打开“属性”,选择“共享”,选中图中的第一项,然后选中你刚刚新建的那个无线连接的名字,然后点确定。

      然后我们便要开始wifi热点了,开始的方法我们将其放在一个线程里,其原理也是利用java代码调用命令提示符。其代码如下:java代码调用命令提示符。其代码如下:

Thread start=(new Thread(){
		public void run(){
			try 
	        {
				Process child=Runtime.getRuntime().exec("netsh wlan start hostednetwork");
	            InputStream in=child.getInputStream();
	            int c=0;
	            while(c!=-1)
	            {
	                c=in.read();
	            }
	            in.close();
	            try 
	            {
	                child.waitFor();
	            } 
	            catch (InterruptedException en) {
	                en.printStackTrace();
	            }
	        } 
	        catch (IOException ef) 
	        {
	            ef.printStackTrace();
	        }				
		}
	});

 同样我们还需要定义个关闭wifi热点的方法,该方法也是要放在线程里的。

      如此这般一个建立在笔记本上的wifi热点就算建立好了,此时你的手机应该能搜索到你的wifi了,如果连接上了之后还是不能上网,可能是承载你wifi的无线网卡被设置了局域网防护驱动程序,此时,你只消再次打开你的wifi无线网卡,点击右键选择属性,在“此连接使用下列项目”下面将局域网防护驱动程序前面的勾取消即可。

      这样就万事大吉了,接下来我还想做一个手机能远程控制电脑自动关机的软件,很多同学总是喜欢开着wifi在床上玩手机,但是玩完手机之后却怎么也懒得下床去关电脑睡觉,所以我要实现该功能,如果做完了之后便做成exe格式的软件在同学中试一试效果。

      虽然只是简单的小小程序,人性化却是我比较喜欢的,请多多指正,万望支持。

猜你喜欢

转载自775777006.iteye.com/blog/1955214