首先,现在手机越来越依赖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格式的软件在同学中试一试效果。
虽然只是简单的小小程序,人性化却是我比较喜欢的,请多多指正,万望支持。