Java 同时向多个ip地址发送ping
我做了一个代码,希望发送一个ping到多个ip地址,并从每个ping请求中获取时间值,然后打印并将结果写入一个文本文件中的矩阵中……无论如何,我的问题是,在我完成代码后,我发现我应该同时向这些地址发送ping,或者在我的代码中连续发送地址。我真的希望如果有人帮我。。。 代码:Java 同时向多个ip地址发送ping,java,ping,xml,text,Java,Ping,Xml,Text,我做了一个代码,希望发送一个ping到多个ip地址,并从每个ping请求中获取时间值,然后打印并将结果写入一个文本文件中的矩阵中……无论如何,我的问题是,在我完成代码后,我发现我应该同时向这些地址发送ping,或者在我的代码中连续发送地址。我真的希望如果有人帮我。。。 代码: 导入java.awt.Color; 导入java.awt.Container; 导入java.awt.FlowLayout; 导入java.awt.event.ActionEvent; 导入java.awt.event.A
导入java.awt.Color;
导入java.awt.Container;
导入java.awt.FlowLayout;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.PrintWriter;
导入java.util.ArrayList;
导入java.util.Formatter;
导入java.util.List;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JLabel;
导入javax.swing.JTextField;
导入javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.parserConfiguration异常;
导入org.w3c.dom.Document;
导入org.w3c.dom.Element;
导入org.w3c.dom.Node;
导入org.w3c.dom.NodeList;
导入org.xml.sax.SAXException;
公共类Pinggg扩展了JFrame{
private boolean stop=false;//启动或停止ping
公共平{
容器cp=this.getContentPane();
cp.setLayout(新的FlowLayout(FlowLayout.CENTER,10,10));
JButton btnStart=新JButton(“Demarer le测试”);
cp.add(btnStart);
btnStart.addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件evt){
停止=错误;
试一试{
最终格式化程序x=新格式化程序(“C:/Users/VAIO/workspace/tcc/gastoon/kkk.txt”);
版画作家;
writer=新的PrintWriter(“C:Users/VAIO/workspace/tcc/gastoon/kkk.txt”);
对于(int m=0;m<10;m++){
如果(停止)中断;
//检查停止按钮是否已按下,
//这会将停止标志更改为true
DocumentBuilderFactory BuilderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder db=BuilderFactory.newDocumentBuilder();
documentdoc=db.parse(“C:/Users/VAIO/workspace/tcc/gastoon/adresStore.xml”);
doc.normalize();
nodelistrootnodes=doc.getElementsByTagName(“连接”);
节点rootNode=rootNodes.item(0);
元素rootElement=(元素)rootNode;
NodeList l=rootElement.getElementsByTagName(“用户”);
节点用户=l.item(0);
元素=(元素)用户;
NodeList nl=element.getElementsByTagName(“用户”);
List allIps=new ArrayList();
对于(inti=0;i这取决于你所说的“我应该同时向这些地址发送ping”的意思
1) 创建一个threadppol并通过它发送您的请求。这将批量处理您的ping请求(达到线程池的大小)。但是从技术上讲,这不是“同时”
2) Ping广播地址。这是否有效(或者更确切地说,它如何有效)取决于您的网络设置。它在Internet上不起作用,但可能在公司局域网上起作用。因此,这取决于您尝试ping的IP地址的性质。@yoonix,投票迁移问题,我们会将其转移。格式太糟糕了……您的问题是什么?这只是一个200多行的代码转储。
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class Pinggg extends JFrame{
private boolean stop = false; // start or stop the ping
public Pinggg(){
Container cp = this.getContentPane();
cp.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
JButton btnStart=new JButton("demarrer le test");
cp.add(btnStart);
btnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
stop = false;
try {
final Formatter x = new Formatter("C:/Users/VAIO/workspace/tcc/gastoon/kkk.txt");
PrintWriter writer;
writer = new PrintWriter("C:Users/VAIO/workspace/tcc/gastoon/kkk.txt");
for (int m = 0; m < 10; m++) {
if (stop) break;
// check if STOP button has been pushed,
// which changes the stop flag to true
DocumentBuilderFactory BuilderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder db=BuilderFactory.newDocumentBuilder();
Document doc=db.parse("C:/Users/VAIO/workspace/tcc/gastoon/adresStore.xml");
doc.normalize();
NodeList rootNodes=doc.getElementsByTagName("connection");
Node rootNode=rootNodes.item(0);
Element rootElement=(Element) rootNode;
NodeList l=rootElement.getElementsByTagName("users");
Node users=l.item(0);
Element element=(Element) users;
NodeList nl=element.getElementsByTagName("user");
List<String> allIps = new ArrayList<String>();
for(int i=0;i<nl.getLength();i++){
Node user=nl.item(i);
Element ele=(Element) user;
String adrss=ele.getElementsByTagName("ipAdress").item(0).getTextContent();//+" -n 1";
//System.out.println(adrss);
allIps.add(i, adrss);
//writer.print(allIps.get(i)+" ");
// System.out.println(adrss);
//System.out.println(i);
// writer.format("%s ",i);
//writer.println( adrss);
}
// for(String n : allIps)
//{
// writer.print(allIps+" ");
//}
writer.println("\n");
for(int j=0;j<allIps.size();j++)
{
//writer.print(allIps.get(i)+" ");
String pingCmd = "ping " +allIps.get(j) +" -n 1";
String pingResult = "";
String str="";
try {
Runtime r = Runtime.getRuntime();
Process p = r.exec(pingCmd);
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
{
// writer.println(inputLine);
//System.out.println(inputLine);
pingResult += inputLine;
}
String[] lines = pingResult.split("\n");
List<String> bb = new ArrayList<String>();
for (int k=0;k<lines.length;k++) {
String line=lines[k];
if ((line.contains("temps=") && (line.contains(allIps.get(j))))){
// Find the index of "time="
int index = line.indexOf("temps=");
String time = line.substring(index + "temps=".length(),line.indexOf("ms"));
//bb.add(time);
// writer.print(allIps.get(j)+" ");
writer.print(time);
//System.out.println(allIps.get(j)+" ");
System.out.println(time);
}
else {
writer.print("NON"+" ");
}
}
int[]tab=new int[allIps.size()];
for(int d=0;d<tab.length;d++ ){
}
}
catch (IOException ie) {
System.out.println(ie);
}
}}
writer.flush();
}//}
catch (SAXException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
catch (IOException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
catch (ParserConfigurationException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
);
JButton btnStop = new JButton("Analyser le test ");
cp.add(btnStop);
btnStop.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
stop = false; // set the stop flag
}
});
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cp.setBackground(Color.black);
setTitle("PING");
setSize(300, 120);
setVisible(true);
}
}