Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:具有简单黑名单的套接字连接_Java_Sockets_Serversocket - Fatal编程技术网

Java:具有简单黑名单的套接字连接

Java:具有简单黑名单的套接字连接,java,sockets,serversocket,Java,Sockets,Serversocket,因此,我正在用Java制作一个简单的客户机-服务器应用程序。我认为这很简单,我正在尝试实现一个blacklist.txt,它有多个IP地址,如果其中任何一个IP地址与试图连接到套接字的IP地址匹配,就会被拒绝连接。我对这有点陌生,但我得到的是: ServerSocket server = new ServerSocket(6500); System.out.println ("Server Started on port 6500"); while (true){//W

因此,我正在用Java制作一个简单的客户机-服务器应用程序。我认为这很简单,我正在尝试实现一个blacklist.txt,它有多个IP地址,如果其中任何一个IP地址与试图连接到套接字的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
更改此行

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


字符串是对象(不是像
int
float
char
)这样的基本类型,应该与
进行比较。equals()

Java字符串应该通过
.equals()
@dlev进行比较是的,你完全正确,我的错误。它现在起作用了,我很惭愧^^^如果你愿意,把它作为解决方案,我会接受的。很高兴事情现在起作用了。老实说,我认为更好的解决办法是删除这个问题,因为它是相当本地化的。我建议您扩展serverSocket,创建一个类似BlacklistingServerSocket的类,并重载accept方法。生成更优雅的代码,而不是将所有逻辑混合在一个地方
if (line.equals(socket.getInetAddress().toString())) {