2015-12-03 269 views
0

我在这里有一些代码连接到服务器,我收到错误java.net.ConnectException:连接拒绝。拒绝Java TCP套接字连接

我尝试在命令行上使用ping,我收到了数据包,所以我知道它正在工作。

我也尝试使用telnet连接到我的IP地址,它给了我同样的连接拒绝错误。我的代码有问题吗?我不确定为什么我的连接被拒绝。

客户:

public class InstantMessagingClient 
{ 
    private Socket socket; 

    public InstantMessagingClient(String serverName, int port) 
    { 

     new Thread() { 
      public void run() 
      { 
       try 
       { 
        System.out.println("Connecting to " + serverName + " and port: " + port); 
        //socket.setSoTimeout(10000); 
        socket = new Socket(serverName, port); 
        System.out.println("Client: connected to server at address: " + socket.getLocalAddress() + " and port: " + socket.getPort()); 
       } 
       catch(Exception e) 
       { 
        System.out.println(e.toString()); 
       } 

      } 
     }.start(); 
    } 
} 

服务器:

public class InstantMessagingServer 
{ 
    private int port; 
    private Socket clientSocket; 
    private ServerSocket serverSocket; 

    public InstantMessagingServer(int port) 
    { 
     try 
     { 
      this.port = port; 
      serverSocket = new ServerSocket(port); 
      serverSocket.setSoTimeout(10000); 
      System.out.println("Server: Connected to port"); 
      new Thread() 
      { 
       public void run() 
       { 
        while(true) 
        { 
         try 
         { 
          System.out.println("Server: Waiting for port " + serverSocket.getLocalPort()); 
          System.out.println(serverSocket.getLocalSocketAddress()); 
          clientSocket = serverSocket.accept(); 
          System.out.println("Server: Just connected to " + clientSocket.getRemoteSocketAddress()); 

         } 
         catch(Exception e) 
         { 
          System.out.println(e.toString()); 
          break; 
         } 
        } 
       } 
      }.start(); 
     } 
     catch(Exception e) 
     { 
      System.out.println(e.toString()); 
     } 
    } 

} 

主营:

public void main() 
{ 
InstantMessagingServer server = new InstantMessagingServer(18638); 
InstantMessagingClient client = new InstantMessagingClient("(My IP Address)", 18638); 
} 

回答

1

,我发现了错误java.net.ConnectException:连接被拒绝。

这恰恰有一个意思。在您试图连接的IP:端口上没有任何内容正在监听。

我试着在命令行上使用ping,并收到数据包,所以我知道它的工作。

你知道主机正在工作。无法证明您尝试连接的端口或服务的任何信息。

我也尝试使用telnet连接到我的IP地址,它给了我相同的连接拒绝错误。

出于同样的原因。

我的代码有问题吗?

IP:端口错误或服务器根本没有启动。