2013-11-20 161 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检查服务器是否在监听客户端。

相关问题