【问题标题】:IOException error when creating a socket in java在java中创建套接字时出现IOException错误
【发布时间】:2014-11-30 15:54:55
【问题描述】:

我正在开发一个聊天客户端,我创建了一个注册 Jframe,用户可以在其中注册。 注册时,它应该连接到服务器,以便服务器可以检查用户ID是否已经存在。 当我创建一个新套接字时,它总是给我一个错误。

创建套接字的代码是:

try
    {
        String serverIP;
        int Port = 5000;
        Socket socks;
        serverIP = String.valueOf(InetAddress.getLocalHost());
        socks = new Socket(serverIP, Port);           
        InputStreamReader streamreader = new InputStreamReader(socks.getInputStream());        
        reader = new BufferedReader(streamreader);          
        writer = new PrintWriter(socks.getOutputStream());          
        writer.println(inputUsername + ":"+inputPassword+":"+inputConfirmPassword+":Register");            
        writer.flush(); // flushes the buffer

    }
    catch(IOException io)
    {
        System.err.println(io.getMessage()+"---connection error 1");
    }
    catch(SecurityException se)
    {
        System.err.println(se.getMessage()+"---connection error 2");
    }
    catch(IllegalArgumentException ae)
    {
        System.err.println(ae.getMessage()+"---connection error 3");
    }
    catch(NullPointerException ne)
    {
        System.err.println(ne.getMessage()+"---connection error 4");
    }

当我执行时,我得到以下错误:

Dell/172.16.3.24---连接错误1

这是由 IOException catch 语句生成的。

谁能告诉我为什么会发生这种情况以及如何纠正它?

非常感谢。

【问题讨论】:

    标签: java sockets


    【解决方案1】:

    来自 javadoc 的 IOException 定义

    表示发生了某种 I/O 异常。此类是由失败或中断的 I/O 操作产生的一般异常类。

    虽然我无法访问您的完整堆栈跟踪,但声明 Dell/127.16.3.24 让我相信这是创建套接字时提供的 IP 地址。

    我想您可能想尝试使用InetAddress.getLocalHost().getHostAddress,它只会返回IP,而InetAddress.getLocalHost() 也会返回系统的主机名。

    来自 javadoc 的 InetAddress.getLocalHost

    返回本地主机的地址。这是通过检索来实现的 系统中主机的名称,然后将该名称解析为 网络地址。

    请注意,如果您已经知道需要本地主机 ip,则可以在创建套接字时简单地传递“127.0.0.1”,它也应该可以解决问题。

    您还应该考虑在finally 块中添加flush 语句,以确保即使发生异常也会刷新流。当然也可以在该块中添加close 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-30
      • 1970-01-01
      • 2019-02-27
      相关资源
      最近更新 更多