Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“Pinging”;Java中的服务器_Java_Sockets - Fatal编程技术网

&引用;“Pinging”;Java中的服务器

&引用;“Pinging”;Java中的服务器,java,sockets,Java,Sockets,我目前正试图编写一个Java应用程序来检查Archege游戏服务器是否在线。我得到了以下数据: Archeage EU服务器IP:193.105.173.130 使用端口:80123712391250 我设法使用名为Tcping的工具检查端口,但我想编写一个Java应用程序,它将具有一些GUI,并在建立连接时播放声音或执行其他操作 目前,我被以下代码困住了(由于某些原因无法正常工作): 我收到的错误消息: Exception in thread "main" java.net.SocketExc

我目前正试图编写一个Java应用程序来检查Archege游戏服务器是否在线。我得到了以下数据: Archeage EU服务器IP:193.105.173.130 使用端口:80123712391250

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

目前,我被以下代码困住了(由于某些原因无法正常工作):

我收到的错误消息:

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)

我做错了什么?

摆脱
readLine()
BufferedReader
以及所有这些。HTTP服务器不会向您发送任何信息,它在等待您发送请求,最终会让您超时。等待这一点或进行任何I/O都没有意义。您成功建立连接的事实足以证明服务器已启动。

很遗憾,我无法访问服务器代码。这不是我的游戏。我甚至不需要接收某种预定义的消息,我只想检查服务器是否正常运行。@vishalgajera垃圾。你不需要知道任何关于服务器的信息,只需要知道它的端口就可以知道它是否在运行。@vishalgajera这是一种奇怪的说法。要么我是对的,要么我是错的:没有关于它的“也许”;这不是一个让我不满意的问题:这是一个事实问题,很容易通过分析或实验确定。因此,我只需使用
is.connected()
方法来检查连接是否已建立?您甚至不必这样做。对于您发布的代码,
套接字
存在或引发异常。如果它存在,它是连接的。因此,为了正确处理异常,我应该使用
try{}
catch{}
块,而不是
throws
。。。嗯,这个解决办法太简单了,我现在觉得自己很愚蠢。无论如何,感谢您如此快速和信息丰富的回复@贾斯汀谢谢你的感谢,但我还没有说一句关于“正确的异常处理”的话。那是你的贡献。对不起,那是你个人的想法。我意识到,为了检查服务器是否启动,我只需要套接字,但如果我想在检查之后做一些事情,我认为异常处理是一种方法。
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)