java - 简单的java套接字客户端,什么抛出这个ConnectException?

标签 java sockets connectexception

我正在为我的非常简单的服务器编写一个非常简单的客户端。如果服务器没有运行,第 17 行会在运行时抛出 ConnectException,我不知道为什么。我已经浏览了 Socket 构造函数和 getInputStream() 的文档,但它们都没有抛出 ConnectException。我查看了 CE 的文档,它说“尝试将套接字连接到远程地址和端口时发生错误的信号。通常,连接被远程拒绝(例如,没有进程正在监听远程地址/港口)。”确实如此,服务器没有运行,但我不知道除了反复试验之外如何知道这一点,为什么它不在 Socket 的文档中?

import java.net.*;
import java.io.*;

public class ClientLesson {

    //declare vars
    static Socket socket;
    static BufferedReader inputReader;

    public static void main(String[] args) throws IOException {
        try {
            socket = new Socket("Lithium", 55555);
        } catch (IOException ioe) {
            System.out.println(ioe.toString());
        }
        try {
   this is the problem --> inputReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        } catch (IOException ioe) {
            System.out.print("couldn't get I/O stream");
            ioe.printStackTrace();
        }  
        String fromServer;
        while ((fromServer = inputReader.readLine()) != null) {
            System.out.println(fromServer);
        }
        inputReader.close();
        socket.close();

    }
}

最佳答案

我刚刚意识到问题完全不同...... ConnectException 由 Socket 构造函数抛出,并作为 IOException 处理,因为 CE 是一个子类型,这对我来说现在有意义。我在第 17 行收到 NPE,但我对终端输出感到困惑,如下所示:

nexus@Lithium ~/Desktop/Java Workspace/networking $ java ClientLesson 
java.net.ConnectException: Connection refused
Exception in thread "main" java.lang.NullPointerException
    at ClientLesson.main(ClientLesson.java:17)

我不明白这两个问题是不同的。现在我知道问题是第 17 行应该在调用套接字上的方法之前检查第一次尝试是否成功。

关于java - 简单的java套接字客户端,什么抛出这个ConnectException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18676395/

相关文章:

java - 在两台机器上运行 Java RMI 应用程序 - ConnectException

java - 在 cmd 中使用 Eclipse Java 项目运行外部 jar

java - 在什么情况下,一个空的同步块(synchronized block)可以实现正确的线程语义?

java - 如果年份输入错误,日期验证将不起作用

java - 当 Java 作为客户端和 Android 作为服务器时,ServerSocket 不工作

c - 我正在尝试将多个客户端连接到该服务器,但代码似乎不起作用>

java - GWT RPC : Is it secure to send plain-text password

安卓。如何从设备连接到开发机器?

java - 我有一个 ConnectException 由于某种原因没有被捕获

java - 发送邮件时出错 - ConnectException