上一篇文章讲到:开机自动拨号与DDNS
它的实现方式是win10自带的批处理文件,但在我使用的过程中发现,这个批处理文件有些时候会失效,因为在那个批处理文件是以异常的产生才执行对应操作,但在使用的过程中,我发现有一些情况并没有被包括进去。

因此我打算用java程序实现我想要的开机自启,网络自动检测,如果没有ping通则进行断开连接,重新拨号

项目地址:https://github.com/1015770492/PPPOEAndDDNS

断线重连则采用java程序实现,示例代码如下

断线重连网络代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.concurrent.TimeUnit;public class AutoPPPOE {/*** 执行CMD命令,并返回String字符串*/public static String executeCmd(String strCmd) throws Exception {Process p = Runtime.getRuntime().exec("cmd /c " + strCmd);StringBuilder sbCmd = new StringBuilder();BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(), Charset.forName("GBK")));String line;while ((line = br.readLine()) != null) {sbCmd.append(line + "\n");}return sbCmd.toString();}/*** 检测网络* 能ping通则返回true,ping不通返回false*/private static boolean checkInternet() throws Exception {String comm = "ping -n 1 114.114.114.114";String s = executeCmd(comm);if (s.indexOf("TTL") >= 0) {System.out.println(s);return true;} else if (s.indexOf("请求超时") >= 0 || s.indexOf("无法访问目标网") >= 0 || s.indexOf("传输失败") >= 0) {System.err.println(s);return false;} else {return false;}}/*** 自动联网并且实现DDNS*/public static void main(String[] args) throws Exception {URL resource = AutoPPPOE.class.getClassLoader().getResource("");
//        String path = resource.getPath().substring(1, resource.getPath().length());// 获取路径,为了拼接成完整的路径// 因为打成jar包,开机启动时会导致路径变化,因此写死绝对路径,所以这里也需要自行修改String path = "D:/IdeaProjects/PPPOEAndDDNS/out/production/PPPOEAndDDNS";String DDNSCommand = path + "ddns.exe -c " + path + "config.json";// DDNS命令,注意修改config.json文件(注意文件路径不要有空格以及中文)System.out.println(DDNSCommand);// 下面是断线重连的代码逻辑while (true) {if (!checkInternet()) {TimeUnit.SECONDS.sleep(3);// 再等3秒,重新检测如果还没有ping通则说明网络确实没通(小心谷歌的dns服务器把你的ping作为攻击)if (!checkInternet()) {String disconnectResult = executeCmd("rasdial 13879307576 /DISCONNECT");// 断开拨号名称为 “宽带连接” 的网络连接System.out.println(disconnectResult);if (disconnectResult.indexOf("没有连接") >= 0 || disconnectResult.indexOf("命令已完成") >= 0) {String connectResult = executeCmd("rasdial 13879307576 13879307576@lan 343235");// 使用网络连接为 "宽带连接" 的网络进行拨号连接(宽带账号 和 密码 别忘了改)System.out.println(connectResult);TimeUnit.SECONDS.sleep(10);// 暂停一会,不暂停的话重新进行判断网络的时候会导致ping不通,实际已经连接成功了}}} else {executeCmd(DDNSCommand);// DDNS 执行动态解析DNS命令TimeUnit.SECONDS.sleep(10);}}}
}

开机自动拨号则采用win10的基本任务完成

参考文章:《windows开机后台运行java程序》

动态DNS解析则看项目文档说明

参考 https://github.com/NewFuture/DDNS 文档

开机自动拨号,断线重连,并且动态解析dns记录,java版相关推荐

  1. Windows下使用任务计划程序实现宽带开机自动拨号和断线自动重连

    由于学校网络改造,我们告别了客户端登录的锐捷,迎来了PPPoE拨号的深澜,本以为新的认证计费系统能带来更好的体验,结果偏偏在很基础的功能上出问题,诸如macOS下拨号没有IPv6地址.高峰期卡成狗.不 ...

  2. 如何让电脑开机自动拨号联网

    用ADSL拨号上网的朋友,是不是觉得每次都要去点击连接图标才能上网很麻烦.其实可以通过设置实现电脑开机自动拨号联网.本文分为以下几个部分:最简单方法.最常用方法.使用宽带路由器自动上网方法.windo ...

  3. Windows系统设置宽带连接开机自动拨号的方法

    一开始有这个需求是实验室有一台服务器,我寒假回家可能需要操作(没办法,就是这么认真,放假也要科研),这样的话为了防止实验室断电或断网,我需要保证断网重拨和重启重拨.这个地方需要注意一点服务器断电自动重 ...

  4. 教你如何让电脑的ADSL宽带连接开机自动拨号

    教你如何让电脑的ADSL宽带连接开机自动拨号. 事情是这样的,因为黯神伤情很不习惯ADSL每次开机都要自己拨号. 那么能不能让ADSL开机就自己拨号呢?答案当然是肯定的.(以下内容高手跳过) 黯神伤情 ...

  5. 设置开机自动 .拨号上网。

    (1)设置开机自动拨号上网 1.让系统记住用户名和密码: 双击桌面刚创建的ADSL快捷方式,输入用户名和密码(WIN XP在创建拨号连接时已完成该步骤),勾选"保存密码",单击&q ...

  6. ADSL开机自动拨号

    先双击打开宽带连接---属性---选项---去掉   "提示名称.密码证书等"   前面的勾即 将以下代码复制.粘贴到记事本另存为" 开机自动拨号.reg" 后 ...

  7. 利用.pbk来实现ADSL开机自动拨号

     利用.pbk来实现ADSL开机自动拨号  当你新建拨号连接或者VPN连接之后在你的电脑里会创建一个.pbk的文件 这个.pbk的文件可以说是一个集合,将你电脑的所有连接都保存在一起. 同时你还可以将 ...

  8. Windows 7 开机自动拨号 常用的五种方

    以下均为转载,感谢原作者的无私奉献,写的如此的详细,相信Windows7的友友有很大的帮助哦! (这里推荐大家用第一种,很方便,很简单哦!) 原文: 今晚突然不太喜欢现在的拨号方法,特上网寻找各种WI ...

  9. Windows 7 开机自动拨号 常用的五种方法

    windows 7开机自动拨号各方法整理 ,以下均为转载,感谢原作者的无私奉献,写的如此的详细,相信Windows7的友友有很大的帮助哦! (这里推荐大家用第一种,很方便,很简单哦!) 原文: 今晚突 ...

最新文章

  1. 实战域树部署,Active Directory系列之十九
  2. Windows下Caffe-SSD编译
  3. 最佳实践:如何基于MNS和OSS实现无大小限制的消息传输
  4. 2012.2.18-silverlight设计器崩溃
  5. 战线长一点的飞秋实现原理
  6. python开源库生成式对抗网络_神经网络结构:生成式对抗网络(GAN)
  7. 【Oracle】删除不存在表时避免报错
  8. Unity3D基础37:Input控制面板
  9. Android Retrofit下载文件进度
  10. 条件随机场、CBOW、word2vect、skip-gram、负采样、分层softmax(1)
  11. Android 增强版百分比布局库 为了适配而扩展
  12. 数据结构系列,二叉平衡树的构建
  13. Mac修改hosts方法
  14. 使用最广泛的缓存Redis,升级到6.0后超神了
  15. 哲学必读10本经典著作
  16. 韩式时尚大片《九月风》(出镜:马晓辉/徐嘉依)
  17. 用程序阻止计算机睡眠,PreventTurnOff防止电脑休眠工具|win10电脑防止屏幕休眠软件_最火软件站...
  18. 桌面计算机性能监控系统,监视 Windows 桌面应用的使用情况和性能 - Azure Monitor | Microsoft Docs...
  19. javaweb企业员工考勤管理系统
  20. android中底部弹窗,Android实现从底部弹出的Dialog示例(一)

热门文章

  1. 谷粒商城ES自定义词库(十八)
  2. 推荐Win11系统自带包管理工具WinGet安装软件,Win10同样可用
  3. 浅谈大规模红蓝对抗攻与防
  4. linux软中断是什么机制,Linux软中断原理浅析
  5. [3] 信息收集(六月最佳)
  6. 51单片机串口通讯介绍和实现
  7. bootmgr快速修复win7_小白教程 | U盘重装win7系统
  8. 如何把未压缩的.avi文件批量地转为.yuv文件(yuv420)?
  9. 【医学图像处理】3 图像梯度及边缘提取
  10. SAP案例教程MM委外采购前台操作