【发布时间】:2013-07-27 08:48:54
【问题描述】:
我编写了一个简单的服务器应用程序,如下所示。 我在 run() 中有一个 while 循环,但它似乎只执行一次 try 块。我希望程序不断吐出“GoodBye's”。我如何让它这样做?
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();
}
}
}
【问题讨论】:
-
从 catch 块中移除这些中断。
-
你遇到异常了吗
-
您可能会遇到一些异常并在 catch 中跳出循环!
标签: java