利用java程序循环定时对多个IP地址进行在线检测.docx
- 文档编号:10039945
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:30
- 大小:217.16KB
利用java程序循环定时对多个IP地址进行在线检测.docx
《利用java程序循环定时对多个IP地址进行在线检测.docx》由会员分享,可在线阅读,更多相关《利用java程序循环定时对多个IP地址进行在线检测.docx(30页珍藏版)》请在冰点文库上搜索。
利用java程序循环定时对多个IP地址进行在线检测
利用java程序循环定时对多个IP地址进行在线检测
利用java程序开发了一个小程序,可以定时循环地对多个IP通过ping查看它是否在线,对不在线设备汇总并提示用户。
因为本程序是基于内通电话系统设备开发的,所以里面一些信息已经存在和固定的。
下面演示一下效果:
打开程序后会有一个悬浮的窗口在桌面,该悬浮窗口可以拖动,主要功能右键点击即可查看。
点击开始后就会对IP.txt文件内的IP进行ping工作。
ping完后将会列出ping不通的IP信息。
本程序我设置了每6分钟巡查一次。
用户可自行修改配置。
配置文本和IP.txt文件都放在根目录下,如下图:
其中config.properties为配置文件,IP.txt则是存放需要ping的IP信息。
下面我们看看config.properties文件的内容。
可以看到配置文件内有2个参数第一个是IntervalTime是多少时间进行巡检,现在时间是每6分钟巡查一次,第二个参数是timeout这个参数是进行ping操作时等待应答包的时间,现在如果1秒内无应答则认为网络不通。
下面我们看看IP.txt的内容:
因为该软件设计是基于内通电话系统的检查,所以信息分别为内通号码,内通电话IP地址,内通电话服务器地址,内通电话位置,内通电话端口信息。
每个信息中间用空格隔开。
用户可修改对应内容。
下面我们看看程序的代码。
我先把程序分了3个包:
interFace文件夹里的程序是:
MainInterface.java里的内容:
packageinterFace;
importjava.awt.Color;
importjava.awt.Point;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JFrame;
importjavax.swing.JMenuItem;
importjavax.swing.JPopupMenu;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseMotionAdapter;
importjava.util.Map;
importjava.util.Vector;
importlittle.IPC;
importlittle.Initialization;
importlittle.MyPanel;
importmainProgram.MybTimeTask;
publicclassMainInterfaceextendsJFrameimplementsActionListener{
privateMyPanelmb1;
privateJPopupMenujp;
publicstaticJMenuItemjm2;
privateJMenuItemjm1,jm3;
privatebooleanstartDrag=false;
privatePointp=null;
publicstaticVector
publicMainInterface(){
mb1=newMyPanel();
mb1.setSize(75,75);
mb1.setBackground(Color.yellow);
jp=newJPopupMenu();
jm1=newJMenuItem("配置");
jm1.setEnabled(false);
jm2=newJMenuItem("开始");
jm3=newJMenuItem("退出");
jm1.setBackground(Color.green);
jm2.setBackground(Color.green);
jm3.setBackground(Color.green);
jp.add(jm1);
jp.add(jm2);
jp.add(jm3);
mb1.add(jp);
jm1.addActionListener(this);
jm2.addActionListener(this);
jm3.addActionListener(this);
this.add(mb1);
this.setUndecorated(true);
this.setBounds(100,100,75,75);
this.setVisible(true);
mb1.addMouseListener(newMouseAdapter(){
publicvoidmouseClicked(MouseEvente){
if(e.getButton()==MouseEvent.BUTTON3){
//在table显示
jp.show(mb1,e.getX(),e.getY());
}
}
});
mb1.addMouseListener(newMouseAdapter(){
publicvoidmousePressed(MouseEvente){
startDrag=true;
p=e.getPoint();
}
publicvoidmouseReleased(MouseEvente){
startDrag=false;
}
});
mb1.addMouseMotionListener(newMouseMotionAdapter(){
publicvoidmouseDragged(MouseEvente){
Pointp1=e.getPoint();
Pointp2=getLocation(null);
p2.x+=p1.x-p.x;p2.y+=p1.y-p.y;setLocation(p2);
}
});
}
privatestaticvoidstart(){
MybTimeTask.getInstance().start(true);
}
privatestaticvoiddestoryed(){
MybTimeTask.getInstance().destroyed();
}
@Override
publicvoidactionPerformed(ActionEvente){
//TODOAuto-generatedmethodstub
if(e.getSource().equals(jm1)){
//newSetupInterface(this);
}
if(e.getSource().equals(jm2)){
if(jm2.getText()=="开始"){
newInitialization().InitializationFile();
start();
jm2.setText("暂停");
jm2.setEnabled(false);
}else{
jm2.setText("开始");
destoryed();
}
}
if(e.getSource().equals(jm3)){
//Mapmap1=Thread.getAllStackTraces();
//System.out.println(map1.size());
System.exit(0);
}
}
}
ProgressBarInterface.java的内容:
packageinterFace;
importjava.awt.Color;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
importjavax.swing.JProgressBar;
importjavax.swing.JScrollPane;
importjavax.swing.JTable;
importjavax.swing.JTextArea;
importjavax.swing.table.TableColumn;
importlittle.LittleProgram;
importmainProgram.PingThread;
publicclassProgressBarInterfaceextendsJFrameimplementsActionListener{
privateJPanelmb1;
privateJTablejt;
privateJScrollPanejsp=newJScrollPane();
privateJProgressBarprogressBar=newJProgressBar();
privateJButtonqx=newJButton("取消");
privateLittleProgramlp=newLittleProgram();
privatePingThreadpt1,pt2,pt3,pt4,pt5;
publicProgressBarInterface(){
mb1=newJPanel();
mb1.setSize(550,200);
mb1.setBackground(Color.yellow);
mb1.setLayout(null);
progressBar.setIndeterminate(false);//设置进度条的样式为不确定的进度条样式(进度条来回滚动),false为确定的进度条样式(即进度条从头到尾显示)
progressBar.setStringPainted(true);//设置进度条显示提示信息
progressBar.setString("正在轮巡");
progressBar.setBounds(5,10,540,30);
qx.setBounds(240,170,80,25);
qx.addActionListener(this);
mb1.add(progressBar);
mb1.add(qx);
this.add(mb1);
this.setUndecorated(true);
this.setBounds(200,200,550,200);
this.setVisible(true);
pt1=newPingThread(lp.LoadRead("./ip"+1+".txt"));
newThread(pt1).start();
pt2=newPingThread(lp.LoadRead("./ip"+2+".txt"));
newThread(pt2).start();
pt3=newPingThread(lp.LoadRead("./ip"+3+".txt"));
newThread(pt3).start();
pt4=newPingThread(lp.LoadRead("./ip"+4+".txt"));
newThread(pt4).start();
pt5=newPingThread(lp.LoadRead("./ip"+5+".txt"));
newThread(pt5).start();
booleanmoon=true;
while(moon){
try{
Thread.sleep(100);
}catch(Exceptione){
}
progressBar.setValue(pt1.getprogressNumber()+pt2.getprogressNumber()+pt3.getprogressNumber()+pt4.getprogressNumber()+pt5.getprogressNumber());
if(pt1.getThreadNumber()+pt2.getThreadNumber()+pt3.getThreadNumber()+pt4.getThreadNumber()+pt5.getThreadNumber()==5){
moon=false;
}
}
progressBar.setValue(100);
MainInterface.NoJHipc=lp.AdjustTheTask(MainInterface.NoJHipc);
lp.SaveTiShiYuYin(MainInterface.NoJHipc.size());
String[]columnNames={"号码","IP","服务器","位置","端口"};
Object[][]obj=newObject[MainInterface.NoJHipc.size()][5];
for(inti=0;i for(intj=0;j<5;j++){ switch(j){ case0: obj[i][j]=MainInterface.NoJHipc.get(i).getTelephoneNumber(); break; case1: obj[i][j]=MainInterface.NoJHipc.get(i).getIpClient(); break; case2: obj[i][j]=MainInterface.NoJHipc.get(i).getIpServer(); break; case3: obj[i][j]=MainInterface.NoJHipc.get(i).getPositionDescription(); break; case4: obj[i][j]=MainInterface.NoJHipc.get(i).getProt(); break; } } } jt=newJTable(obj,columnNames){ publicbooleanisCellEditable(introw,intcolumn){ returnfalse; }//表格不允许被编辑 }; jt.setBounds(0,0,540,110); TableColumncolumn=null; column=jt.getColumnModel().getColumn(0); column.setPreferredWidth(40); column=jt.getColumnModel().getColumn (1); column.setPreferredWidth(100); column=jt.getColumnModel().getColumn (2); column.setPreferredWidth(100); column=jt.getColumnModel().getColumn(3); column.setPreferredWidth(100); column=jt.getColumnModel().getColumn(4); column.setPreferredWidth(250); jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); jsp.setViewportView(jt); jsp.setBounds(5,50,540,110); qx.setText("结束"); lp.loadTiShiYuYin(); mb1.add(jsp); mb1.updateUI(); mb1.repaint(); } @Override publicvoidactionPerformed(ActionEvente){ //TODOAuto-generatedmethodstub if(e.getSource().equals(qx)){ if(pt1.getThreadNumber()+pt2.getThreadNumber()+pt3.getThreadNumber()+pt4.getThreadNumber()+pt5.getThreadNumber()==5){ MainInterface.jm2.setEnabled(true); dispose(); }else{ pt1.setflag(false); pt2.setflag(false); pt3.setflag(false); pt4.setflag(false); pt5.setflag(false); MainInterface.jm2.setEnabled(true); dispose(); } System.out.println("结束"); } } } Little文件夹的内容是: Initialization.java的内容是: packagelittle; importjava.util.Vector; publicclassInitialization{ privateLittleProgramlp=newLittleProgram(); privateVector privateVector privateVector privateVector privateVector privateVector publicvoidInitializationFile(){ if(lp.JudgeIPExist()){ JHipc=lp.LoadRead("./IP.txt"); if(JHipc.size()%5! =0){ intmoon=5-JHipc.size()%5; for(inti=0;i JHipc.add(newIPC("0000","127.0.0.1","10.10.10.1","本地网址","T2T21P00")); } } for(inti=0;i<(JHipc.size()/5);i++){ JHipc1.add(JHipc.get(i)); JHipc2.add(JHipc.get(i+(JHipc.size()/5))); JHipc3.add(JHipc.get(i+2*(JHipc.size()/5))); JHipc4.add(JHipc.get(i+3*(JHipc.size()/5))); JHipc5.add(JHipc.get(i+4*(JHipc.size()/5))); } }else{ } lp.SaveWrite("./ip1.txt",JHipc1); lp.SaveWrite("./ip2.txt",JHipc2); lp.SaveWrite("./ip3.txt",JHipc3); lp.SaveWrite("./ip4.txt",JHipc4); lp.SaveWrite("./ip5.txt",JHipc5); } } IPC.java的内容是: packagelittle; publicclassIPC{ privateStringTelephoneNumber; privateStringIpClient; privateStringIpServer; privateStringPositionDescription; privateStringProt; publicStringgetTelephoneNumber(){ returnTelephoneNumber; } publicvoidsetTelephoneNumber(StringtelephoneNumber){ TelephoneNumber=telephoneNumber; } publicStringgetIpClient(){ returnIpClient; } publicvoidsetIpClient(StringipClient){ IpClient=ipClient; } publicStringgetIpServer(){ returnIpServer; } publicvoidsetIpServer(StringipServer){ IpServer=ipServer; } publicStringgetPositionDescription(){ returnPositionDescription; } publicvoidsetPositionDescription(StringpositionDescription){ PositionDescription=positio
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 java 程序 循环 定时 IP 地址 进行 在线 检测