【问题标题】:while loop is executing only oncewhile 循环只执行一次
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我认为您遇到了异常,因此请删除中断;从捕获块

    【讨论】:

      【解决方案3】:

      从 catch 块中删除 break 语句

      【讨论】:

        猜你喜欢
        • 2013-08-12
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 2019-06-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多