2010-12-05 27 views
0

我正在使用Java TCP套接字創建一個非常簡單的Java聊天程序。我不熟悉套接字編程和Java。我無法連接服務器,因爲每次客戶端連接到服務器時都會超時。也許,這是因爲我輸入了錯誤的IP地址 - 我不知道。簡單的Java聊天程序幫助,與服務器連接時的客戶端超時時間

下面是服務器代碼:

 try 
     { 

      int fport = Integer.valueOf(port.getText()); 
      ServerSocket server = new ServerSocket(fport); 
      Socket socket = server.accept(); 
      msg.append("\\n Server is listening to port:" + port.getText()); 
      BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      PrintWriter out = new PrintWriter(socket.getOutputStream()); 
      out.print(msgtxt.getText()); 
      msg.append("\n\n" + input.readLine()); 
      msg.append("\n\n" + Nombre.getText() + msgtxt.getText()); 


     } 
     catch (Exception ex) 
     { 
      msg.setText("\n\n" + "Error:" + ex.getMessage()); 
     } 

下面是客戶端的代碼:

 try 
     { 
      int iport = Integer.valueOf(port.getText()); 
      int i1; 
      int i2; 
      int i3; 
      int i4; 
      i1 = Integer.valueOf(ip.getText()); 
      i2 = Integer.valueOf(ip1.getText()); 
      i3 = Integer.valueOf(ip2.getText()); 
      i4 = Integer.valueOf(ip3.getText()); 
      byte[] b = new byte[] {(byte)i1, (byte)i2, (byte)i3, (byte)i4 }; 
      InetAddress ipaddr = InetAddress.getByAddress(b); 
      Socket sock = new Socket(ipaddr, iport); 
      BufferedReader input = new BufferedReader(new InputStreamReader(sock.getInputStream())); 
      BufferedWriter output = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())); 
      output.write(m.getText()); 
      while(!input.ready()){} 
      msg.setText("\n\n" + input.readLine()); 
      msg.setText("\n\n" + m.getText()); 
      output.close(); 
      input.close(); 
     } 
     catch (Exception ex) 
     { 
      msg.setText("\n\n" + "Error: " + ex.getMessage()); 
     } 

回答

0

驗證您可以連接到使用服務器遠程登錄(你可能需要的窗口因爲它不是默認安裝的)。

基本上打開到服務器的連接,並看到它的工作原理:

telnet host port 

,如果它的工作原理,也許問題不是establising連接,但在等待服務器的響應(加你的問題的例外)。

one note: 您可以像創建INETAddress一樣打開套接字,只需新建套接字(主機名,端口)。