直接运用Process类,接受服务器发送来的消息。
code:
package com.ping.comd;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Test {
JFrame frame;
JTextArea text;
JButton ping;
JButton clear;
JLabel label;
JTextField field;
JPanel northPanel;
public void startGUI()
{
frame = new JFrame("ping");
frame.setBounds(200, 300, 500, 500);
northPanel = new JPanel();
label = new JLabel("网址或IP:");
field = new JTextField(20);
field.addKeyListener(new MyKeyListener());
ping = new JButton("ping");
ping.addActionListener(new MyListener());
clear = new JButton("clear");
clear.addActionListener(new MyClearListener());
northPanel.add(label);
northPanel.add(field);
northPanel.add(ping);
northPanel.add(clear);
text = new JTextArea(30,50);
text.setEditable(false);
Font f = new Font("Monospaced", Font.PLAIN, 16);
text.setFont(f);
text.setBackground(Color.BLACK);
text.setForeground(Color.ORANGE);
JScrollPane scroll = new JScrollPane(text);
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
frame.getContentPane().add(BorderLayout.CENTER,scroll);
frame.getContentPane().add(BorderLayout.NORTH,northPanel);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void dealPing(String add)
{
text.setText("");
String s="";
Process process;
try {
process = Runtime.getRuntime().exec("cmd /c " + "ping "+add);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
while((s = br.readLine())!=null)
{
System.out.println(s);
text.append(s+"\r\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
class MyClearListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e) {
field.setText("");
text.setText("");
}
}
class MyListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent e) {
text.setText("");
dealPing(field.getText());
}
}
class MyKeyListener implements KeyListener
{
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyChar() == KeyEvent.VK_ENTER)
{
text.setText("");
dealPing(field.getText());
}
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public static void main(String[] args) {
Test test = new Test();
test.startGUI();
}
}
运行如下图:
有些小问题就是显示的时候,效果不是很好。