serversocket.accept()什么时候抛出异常? 【JAVA]

时间:2017-02-01 11:07:01

标签: java sockets exception timer timertask

我想知道每秒传入的连接数量。这意味着,我做了一个像这样的循环:

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

1 个答案:

答案 0 :(得分:0)

您的代码已经完成了您想要的任务。

ServerSocket.accept()的Java文档说明了它:

  

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

因为调用接受块,只有成功建立连接才会增加计数器。

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