2017-07-28 100 views
0

我想创建一个10秒后停止的Java服务器程序。现在,我正在使用setSoTimeout方法。一旦时间到期,我发现异常并生成服务器关闭消息。使Java服务器在一定的时间后停止

但这似乎是一种解决方法。有没有更好的方法来做到这一点?

public class DailyAdviceServer 
{ 
String[] adviceList = {"Take smaller bites", "Go for the tight jeans. No they do NOT make you look fat", 
    "One word: inappropriate", "Just for today, be honest. Tell your boss what you *really* think", 
    "You might want to rethink that haircut"}; 

public void startserver() { 
    try { 
     @SuppressWarnings("resource") 
     ServerSocket serverSock = new ServerSocket(2727); 
     serverSock.setSoTimeout(10000); 
     while (true) 
     { 
      Socket sock = serverSock.accept(); 
      OutputStreamWriter streamwriter = new OutputStreamWriter(sock.getOutputStream()); 
      BufferedWriter writer=new BufferedWriter(streamwriter); 

      String advice = getAdvice(); 
      writer.write(advice); 
      writer.close(); 
     } 


    } catch (SocketTimeoutException ex) 
    { 
     System.out.println("The Server has now shut down."); 
    } 
    catch(IOException ex) 
    { 
     ex.printStackTrace(); 
    } 
} 

private String getAdvice() { 
    int random = (int) (Math.random() * adviceList.length); 
    return adviceList[random]; 
} 

public static void main(String[] args) 
{ 
    DailyAdviceServer server = new DailyAdviceServer(); 
    server.startserver(); 
} 

}

回答

0

您可以创建的ServerSocket后启动一个定时器,当定时器超时后,你可以关闭它

相关问题