serversocket.accept()何时抛出异常?[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在成功接受连接时计数,而不是每次迭代循环时计数。有人帮忙吗?Thx

您的代码已经完成了您想要的操作。

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

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

因此,由于接受块的调用,只有在连接成功的情况下,您才会递增计数器。

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

最新更新