2015-10-15 22 views
0

拋出的UnknownHostException。客戶端套接字無法找到服務器套接字。儘管有我下面的在線教程來適應客戶的Java &服務器之前,我真正開始與他們一起工作了相同的端口號

所有我想現在要做的就是啓動服務器,然後連接客戶端。這對客戶端和服務器來說只有幾行代碼,對我來說這一切看起來都很簡單,所以我不確定問題出在哪裏。

我跑我的服務器程序,然後運行我的客戶端程序,但客戶端套接字無法找到,即使它們具有相同的端口號某種原因,我的服務器插槽。

這是代碼。

服務器:

public class Server { 


    private ServerSocket serverSocket; 
    private int portNumber; 

    public Server(int portNumber){ 
     this.portNumber=portNumber; 
    } 

    public void run() throws IOException { 
     serverSocket = new ServerSocket(portNumber); 
     System.out.println("server at port "+portNumber); 
     System.out.println("Waiting for client."); 
     Socket clientSocket = serverSocket.accept(); 
     System.out.println("Connected."); 
    } 

    public static void main(String[] args) { 
      int portNumber = 9999; 
      try { 
       Server serverSocket = new Server(portNumber); 
       serverSocket.run(); 
      } 
      catch(IOException e){ 
       e.printStackTrace(); 
      } 
     } 
    } 

然後我的客戶端程序:

public class Client { 
    private int portNumber; 
    private String host; 
    Socket clientSocket; 


    public Client(int portNumber,String host){ 
     this.portNumber=portNumber; 
     this.host=host; 
    } 

    public void connect() throws IOException, UnknownHostException { 
     System.out.println("Connecting to port "+portNumber); 
     clientSocket = new Socket(host,portNumber); 
     System.out.println("Connected"); 
    } 
public static void main(String arg[]){ 
      Client clientSocket = new Client(9999,"host"); 
      try { 
       clientSocket.connect(); 
      } 
      catch(UnknownHostException e){ 
       System.err.println("Can't connect to host"); 
      } 
      catch (IOException e) { 
       System.err.println("Can't connet. "+e.getMessage()); 

      } 

     } 
    } 

UnknownHostException當我運行客戶端程序被拋出。

我想我也跟着教程相當密切,但我不知道我的代碼是什麼問題。

我猜想它有什麼與我connect()方法,因爲這就是異常被拋出,但我不能肯定地說。

任何想法?

+0

,你是否嘗試連接到「localhost」作爲你的主機上運行的服務器,而同一臺電腦?否則,它可能是一個防火牆問題。 – Sesame

+0

就是這樣! 我不認爲這個名字很重要,但它確實! 現在工作完美,謝謝! – user83676

回答

0

在你的代碼

Client clientSocket = new Client(9999,"host"); 

,可以更改和運行

Client clientSocket = new Client(9999,"localhost"); 

您的代碼是尋找一個名爲 「主機」 的主機。要麼給它的主機的IP地址。 如果你想使用上述使用

Client clientSocket = new Client(9999,host); 

定義的變量主機,但我不認爲它是越來越初始化的地方

相關問題