Java serversocket.accept()何时引发异常?[爪哇]

Java serversocket.accept()何时引发异常?[爪哇],java,sockets,exception,timer,timertask,Java,Sockets,Exception,Timer,Timertask,我想有一个计数器,显示每秒有多少传入连接。也就是说,我做了一个这样的循环: int incomingConnections; while(true) { try { Socket socket = serverSocket.accept(); incomingConnections++; } catch (Exception ex) { } 之前,我启动了这样一个TimerTask: new Timer().scheduleAtFixedRate(new Tim

我想有一个计数器,显示每秒有多少传入连接。也就是说,我做了一个这样的循环:

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在成功接受连接时计数,而不是每次迭代循环时计数。 有人帮忙吗?
Thx

您的代码已经完成了您想要的功能

ServerSocket.accept()的Java文档声明:

侦听与此套接字的连接并接受它。该方法会一直阻塞,直到建立连接为止

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


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

我不明白您试图对TimerTask做什么。据我所知,那与你的问题无关。而且它什么也不做。为什么要包含它?“每次它迭代循环”和“当它成功接受连接时”在您发布的代码中都是一样的。如果抛出异常,则计数器不会递增。不清楚你在问什么。