【问题标题】:Why is it showing me that connection has not established?为什么它显示连接尚未建立?
【发布时间】:2017-09-25 17:24:50
【问题描述】:

为什么java会为每个端口连接显示这个输出除了这些之外它是否需要java中的基本框架或包之类的东西。我正在处理基本的服务器客户端程序,首先是客户端,其次是服务器。我尝试了基本代码仅用于连接。但每次都会显示此输出

 import java.io.*;
            import java.net.*;
            class DateClient
            {
                public static void main(String args[]) throws Exception
                {
                    Socket soc=new Socket(InetAddress.getLocalHost(),5217);        
                    BufferedReader in=new BufferedReader(new InputStreamReader(soc.getInputStream()  ));
                    System.out.println(in.readLine());
                }    
            }




import java.net.*;
            import java.io.*;
            import java.util.*;
            class DateServer
            {
                public static void main(String args[]) throws Exception
                {
                    ServerSocket s=new ServerSocket(5217);
                    while(true)
                    {
                        System.out.println("Waiting For Connection ...");
                        Socket soc=s.accept();
                        DataOutputStream out=new DataOutputStream(soc.getOutputStream());
                        out.writeBytes("Server Date: " + (new Date()).toString() + "\n");
                        out.close();
                        soc.close();
                    }
                }
            }


        THIS IS OUTPUT

         output:=
                Exception in thread "main" java.net.ConnectException: Connection timed out: conn
                ect
                        at java.net.DualStackPlainSocketImpl.connect0(Native Method)
                        at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
                        at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
                        at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
                        at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
                        at java.net.PlainSocketImpl.connect(Unknown Source)
                        at java.net.SocksSocketImpl.connect(Unknown Source)
                        at java.net.Socket.connect(Unknown Source)
                        at java.net.Socket.connect(Unknown Source)
                        at java.net.Socket.<init>(Unknown Source)
                        at java.net.Socket.<init>(Unknown Source)
                        at DateClient.main(DateClient.java:8)

【问题讨论】:

    标签: java networking network-programming


    【解决方案1】:

    您正在使用 DNS 解析器来获取本地主机名,并且在连接到它时遇到超时,所以:

    • 您的 DNS 解析器配置为已关闭或被防火墙过滤的主机,

    • 或 DNS 解析器将本地主机名解析为不是您的服务器的 IP,并且已关闭或被防火墙过滤。

    这是您可能遇到此类超时的两种主要情况,而不是主机无法访问或端口无法访问错误。

    所以,换行:

    Socket soc = new Socket(InetAddress.getLocalHost(),5217);
    

    这个:

    Socket soc = new Socket(InetAddress.getLoopbackAddress(), 5217);
    

    解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      相关资源
      最近更新 更多