2013-11-20 156 views
0

我在運行服務器客戶端程序時遇到問題。當我運行我的服務器程序時,它會繼續運行,永遠不會結束。另一方面,當我運行我的客戶端程序時,它會拋出一個異常,如下所示(我的防火牆關閉)。服務器客戶端異常

答覆將不勝感激。由於

//Client Code 
import java.io.*; 
import java.net.*; 
public class DailyAdviceClient 
{ 
    public void go() 
    { 
     try { 
      Socket s = new Socket("127.0.0.1", 4242); 
      InputStreamReader read = new InputStreamReader(s.getInputStream()); 
      BufferedReader z = new BufferedReader(read); 
      String advice = z.readLine(); 
      System.out.println("today you should" + advice); 
      z.close(); 
     } 
     catch (IOException ex) 
     { 
      ex.printStackTrace(); 
     } 
    } 
    public static void main(String[] args) 
    { 
     DailyAdviceClient x = new DailyAdviceClient(); 
     x.go(); 
    } 
}   

//Server Code 

import java.io.*; 
import java.net.*; 
public class DailyAdvisor 
{ 
    String[] advicelist = { "take your time", "be patient", 
      "don't be diplomatic", " life is really short", "try to fix things" }; 
    public void go() 
    { 
     try 
     { 
      ServerSocket s = new ServerSocket(4242); 
      while (true) 
      { 
       Socket m = s.accept(); 
       PrintWriter writer = new PrintWriter(m.getOutputStream()); 
       String advice = getAdvice(); 
       writer.println(advice); 
       writer.close(); 
       writer.flush(); 
       System.out.println(advice); 
      } 
     } catch (IOException ex) 
     { 
      ex.printStackTrace(); 
     } 
    } 
    private String getAdvice() 
    { 
     int random = (int) (Math.random() * advicelist.length); 
     return advicelist[random]; 
    } 
    public static void main(String[] args) 
    { 
     DailyAdvisor x = new DailyAdvisor(); 
     x.go(); 
    } 
} 

Exception thrown by Client

+0

你真的需要在每行之前完整的換行符嗎? –

+0

'while(true)'在服務器端創建一個永無止境的循環。你沒有告訴,什麼時候從'while'循環中斷開。 – Smit

+0

在運行客戶端之前,您能否確認您的服務器正在監聽端口? (看看'netstat') – Grambot

回答

0

,服務器不會因爲你使用了while(true)循環結束了。您的服務器必須通過accept()方法持續監聽新的客戶端連接。

關於例外情況,您的代碼在本地運行良好並使用遠程計算機。因此,網絡配置錯誤可能是原因,您必須檢查兩個服務器/客戶端是否可以使用ping命令看到對方。如果是這種情況,那麼使用netstat檢查服務器是否在監聽客戶端。

相關問題