Java:使用简单黑名单的套接字连接

时间:2013-06-15 14:50:55

标签: java sockets serversocket

所以我用Java制作一个简单的客户端 - 服务器应用程序。它很简单,我想,我正在尝试实现一个blacklist.txt,它有几个IP地址,如果任何IP匹配试图连接到Socket的IP,将被拒绝连接。我对此很新,但这就是我得到的:

ServerSocket server = new ServerSocket(6500);
    System.out.println ("Server Started on port 6500");     
    while (true){//Waiting clients
        Socket socket = null;
        BufferedReader reader = new BufferedReader(new FileReader("C:\\UNIV\\Redes\\workspace\\Copy of Ex_4.3_Teste\\lists\\blacklist.txt"));
        String line = null;
        socket = server.accept();

        while ((line = reader.readLine()) != null) {
            if (line == socket.getInetAddress().toString()) {
                 System.out.println("IP Blacklisted: " + socket.getInetAddress().toString());
                 socket.close(); //Refusing connection
            }
            System.out.println("Line: " + line); //Just checking if reading OK
            System.out.println("Socket: " + socket.getInetAddress().toString()); //Just checking if reading OK

        }

        System.out.println("New connection..");

        Thread t = new Thread(new EchoClientThread(socket));                             
        t.start();          
    }       
}

然后我为每个连接客户端启动一个线程,但我认为这与我的要求无关。

如果IP地址等于blacklist.txt的任何一行,整个想法是拒绝连接

我在这里显然有问题,因为它不起作用,有人能指出我正确的方向吗?

非常感谢。

编辑:忘记blacklist.txt的内容:

/192.168.2.200
/127.0.0.1

我在IP之前添加了斜杠,因为我注意到socket.getInetAddress().toString()的输出是/IP.IP.IP.IP

1 个答案:

答案 0 :(得分:1)

更改此行

if (line == socket.getInetAddress().toString()) {

if (line.equals(socket.getInetAddress().toString())) {

字符串是对象(不是intfloatchar等基本类型,应与.equals()进行比较。