有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

连接错误的原因是什么?(Java服务器/socket编程)

我在连接服务器和socket时有点问题。我确保IP是有效的,所以这不是地址不匹配的问题。也不是端口不匹配(我也测试过)

下面是服务器处理程序

class ServerConnect extends Thread
{
   // ...
   public ServerConnect(int port, String pass) throws IOException
   {
      // ...
      this.start();
   }

   public void run()
   {
      try
      {
         // ...
         while (! server.isClosed()) // Make Connections
         {
            Socket newClient = server.accept();
            System.out.println("Connection Accepted!");
            // ...
         }

      }
      // ...
   }
}

这是插座连接器

class ClientConnect extends Thread
{
   // ...
   public ClientConnect(InetAddress ip, int port, String pass)
   {
      try
      {
         System.out.println("Connecting to host:\t" + ip.toString() + ":" + port);
         client = new Socket(ip, port);
         output = new PrintWriter(client.getOutputStream(), true);
         input = new Scanner(client.getInputStream());
         // ...
      }
      // ...
   }
   // ...
}

首先,我尝试在本地进行测试。我输入了我的IP和IP 127.0.0.1,两者都将我连接到我在本地设置的服务器。但是,然后我尝试从另一个IP,这里发生了什么。建立连接的线程冻结了一段时间,然后直接跳到异常,告诉我它找不到主机,而主机从未表示它接受了连接。如果有帮助,我将使用端口4424与服务器连接。在我的代码中是否存在任何可能导致这种情况的因素,或者是否存在我没有采取的措施来防止这种情况发生

另外,如果我没有提供足够的信息,请告诉我。我已经做了大量的测试,可以做更多的工作来帮助找出问题所在


共 (2) 个答案

  1. # 1 楼答案

    听起来像是网络问题。您是否尝试从客户端计算机ping服务器?您是否测试了端口是否可访问(使用telnet或在线端口测试仪)

    只需在您选择的控制台中键入这两个命令,即可在大多数操作系统中运行,并查看是否可以建立连接:

    ping <hostname>
    telnet <hostname> <port>
    
  2. # 2 楼答案

    听起来好像无法从客户端访问服务器。你能从客户端ping服务器的IP地址吗?服务器和客户端之间有防火墙吗?服务器是否运行本地防火墙