2013-07-27 350 views
0

我写了一个简单的服务器应用程序,下面给出。 我在run()里面有一个while循环,但它似乎只执行try块一次。我希望程序不断地吐出“GoodBye's”,我怎样才能做到这一点?while循环只执行一次

import java.net.*; 
import java.io.*; 

public class GreetingServer extends Thread 
{ 
    private ServerSocket serverSocket; 

    public GreetingServer() throws IOException 
    { 
     serverSocket = new ServerSocket(5063); 
     serverSocket.setSoTimeout(0); 
    } 

    public void run() 
    { 
     while(true) 
     { 
     try 
     { 
      System.out.println("Waiting for client on port " + 
         serverSocket.getLocalPort() + "..."); 

     Socket server = serverSocket.accept(); 

     System.out.println("Just connected to " 
           + server.getRemoteSocketAddress()); 

      DataOutputStream out = new DataOutputStream(server.getOutputStream()); 

      out.writeUTF("\nGoodbye!"); 
      //server.close(); 
     } 
    catch(SocketTimeoutException s) 
     { 
      System.out.println("Socket timed out!"); 
      break; 
     } 
    catch(IOException e) 
     { 
      e.printStackTrace(); 
      break; 
     } 
    continue; 
     } 
    } 
    public static void main(String [] args) 
    { 
     try 
     { 
     Thread t = new GreetingServer(); 
     t.start(); 
     } 
     catch(IOException e) 
     { 
     e.printStackTrace(); 
     } 
    } 
} 
+2

取出break声明从catch块删除这些断裂。 –

+0

是你得到例外 –

+1

你可能会得到一些异常,并在捕获中的循环! – NINCOMPOOP

回答

2

你肯定会在eclipse中检查你的logcat异常。 然后找到该异常的解决方案:)

1

我觉得你得到异常,所以删除休息; from catch block

0

从catch块