建设厅焊工证在哪里办/windows优化
我想知道如何在
Java中限制每个客户端(每个特定IP)的TCP请求.例如,我想为每个客户端IP允许每Y秒最多X个请求.我想过将静态Timer / TimerTask与临时受限IP的HashSet结合使用.
private static final Set restrictedIPs = Collections.synchronizedSet(new HashSet());
private static final Timer restrictTimer = new Timer();
因此,当用户连接到服务器时,我将他的IP添加到受限列表,并启动任务以在X秒内取消限制.
restrictedIPs.add(socket.getInetAddress());
restrictTimer.schedule(new TimerTask()
{
public void run()
{
restrictedIPs.remove(socket.getInetAddress());
}
}, MIN_REQUEST_INTERVAL);
我的问题是,在任务运行时,套接字对象可能会关闭,远程IP地址将不再可访问…
欢迎任何想法!此外,如果有人知道Java框架内置的方法来实现这一点,我真的很想听听它.