serversocket.accept() 什么时候抛出异常? [java]

When do serversocket.accept() throws an exception? [java]

我想要一个计数器来计算我每秒有多少传入连接。这意味着,我做了一个这样的循环:

int incomingConnections;
while(true) {
  try {
     Socket socket = serverSocket.accept();
     incomingConnections++;
  } catch (Exception ex) {
  }

之前,我像这样启动了一个 TimerTask:

new Timer().scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                System.out.println("TimerTask: " + incominConnections + " incoming Connections while the last second.");
                incominConnections = 0;
            }
        }, 0, 1000);

我需要做什么,因为我希望 int 仅在接受连接成功时才计数,而不是每次迭代循环时都计数。 有什么帮助吗? 谢谢

您的代码已经达到了您的要求。

ServerSocket.accept() 的 Java 文档指出:

Listens for a connection to be made to this socket and accepts it. The method blocks until a connection is made.

因此,由于对 accept 的调用会阻塞,因此只有在成功建立连接后,您才会增加计数器。

如果在调用 accept() 时抛出异常,您将进入 catch 块,而不执行递增计数器的代码。