2012-03-19 109 views
1

我有一个问题:拦截和阻止连接白衣的Java像防火墙

如何我可以拦截(从IP地址例如:100.100.100.101)的连接,并阻止它,就像一个防火墙?

我没有任何想法从哪里开始。

我想到了ServerSocket,但只是在当前套接字中工作。

感谢您阅读这个问题。 祝您有个愉快的夜晚。

回答

2

您可以创建一个ServerSocket并监听连接。建立连接后,您可以根据规则集检查IP,并立即关闭连接或允许会话继续。

ServerSocket ss = new ServerSocket(12345); 
Socket s = ss.accept(); 
if(isAllowed(s.getInetAddress()){ 
    //Do something useful. 
} else { 
    // Not allowed, close socket. 
    s.close(); 
} 

编辑: 作为评论这实际上并没有让你阻止连接,但它是一个可以在Java中做的最好的。

+2

这不是'拦截'。 – EJP 2012-03-19 02:41:21

+0

@EJP如果你想要一个防火墙,你需要使用防火墙,你将无法阻止使用Java的实际连接。这至少可以从Java中完成。 – Dev 2012-03-19 02:43:40

+0

我同意但它不回答他的问题,它不包含这是最好的可以完成的信息。 – EJP 2012-03-19 02:54:05

2

您无法使用Java编写防火墙。

+0

为什么我不能这样做? – Marcos 2012-03-19 18:38:17

+1

@ user1233315因为Java不提供必要的支持。您不仅需要Java没有的原始套接字,还需要完全抑制数据包的能力,这意味着要在OS TCP堆栈中插入一些东西。 – EJP 2012-03-19 22:52:16