用Java“ping”服务器

时间:2015-11-24 07:02:03

标签: java sockets

我目前正在尝试编写一个Java应用程序,以检查游戏Archeage的服务器是否在线。我有以下数据: Archeage EU服务器IP:193.105.173.130 使用的端口:80,1237,1239,1250

我设法使用称为 Tcping 的工具检查端口,但我想编写一个Java应用程序,该应用程序将具有一些GUI并在建立连接时播放声音或执行其他操作。< / p>

目前我遇到以下代码(由于某种原因无效):

package Code;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

import javax.swing.JOptionPane;

public class SocketCheck {

    public static void main(String[] args) throws IOException {
       String serverAddress = JOptionPane.showInputDialog(
           "Enter IP Address of a machine that is\n" +
           "running the date service on port 80:");
        Socket s = new Socket(serverAddress, 80);
        BufferedReader input =
            new BufferedReader(new InputStreamReader(s.getInputStream()));

        String answer = input.readLine();
        JOptionPane.showMessageDialog(null, answer);

        s.close();
        System.exit(0);
    }
}

我得到的错误消息:

Exception in thread "main" java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
    at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
    at sun.nio.cs.StreamDecoder.read(Unknown Source)
    at java.io.InputStreamReader.read(Unknown Source)
    at java.io.BufferedReader.fill(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at Code.SocketCheck.main(SocketCheck.java:29)

我做错了什么?

1 个答案:

答案 0 :(得分:2)

摆脱readLine()BufferedReader以及所有这些。 HTTP服务器不会向您发送任何内容,它正在等待您发送请求,它最终将为您安排时间。没有必要等待,或根本不做任何I / O.您设法建立连接的事实足以证明服务器已启动。