如何使用套接字程序ping IP地址并通过它发送数据?
答案 0 :(得分:8)
您无法在Java中执行ping操作 - ping在ICMP级别上工作,该级别在IP之上工作,而Java则支持UDP(位于IP之上)和TCP(再次位于IP之上)。它基本上是一个不同的(更高级别)协议,您需要编写自己的(本机)库才能访问IP堆栈。
答案 1 :(得分:7)
Ping是一种特定的ICMP协议。您无法使用纯Java发送ICMP数据包。
但是,您可以打开特定端口的TCP套接字并向其发送一些数据。有数百万个关于如何做到这一点的教程示例。
我建议你看看这些
http://www.google.co.uk/search?q=java+socket+tutorial 600万结果
http://www.google.co.uk/search?q=java+socket+example 1160万条结果。
只发送一个你可以做的角色
Socket s = new Socket(hostname, port);
s.getOutputStream().write((byte) '\n');
int ch = s.getInputStream().read();
s.close();
if (ch == '\n') // its all good.
答案 2 :(得分:0)
Ping使用java中不可用的ICMP协议。这可以是在java中ping服务器的更好方法:
try{
String s = null;
List<String> commands = new ArrayList<String>();
commands.add("ping");
commands.add("192.168.2.154");
ProcessBuilder processbuilder = new ProcessBuilder(commands);
Process process = processbuilder.start();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null)
{
System.out.println(s);
}
}catch (Exception e) {
System.out.println("This is sad ");
}
另一种方法是使用纯Java套接字。