防火墙不要求权限打开端口

时间:2016-11-21 11:43:56

标签: windows-firewall

我正在编写以下用于在Windows中打开端口的java程序。据我所知,每当我们打开一个端口时,防火墙都应该要求允许访问权限。但这里没有暗示它正在开放。它背后的原因是什么。

mycode的

import java.net.*;
import java.io.*;

class Server
{
    public static void main(String[] args) throws Exception
    {
        if(args.length!=1)
        {
            System.out.println("Enter the Port Number");
            return;
        }
        int portNumber = Integer.parseInt(args[0]);
        ServerSocket ss = new ServerSocket(portNumber);
        while(true)
        {
            Socket socket = ss.accept();
            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
            String message = (String)ois.readObject();
            System.out.println("Client: "+message);
            if(message.equals("exit")) break;
            ois.close();
        }
        ss.close();
    }
}

1 个答案:

答案 0 :(得分:1)

只要程序打开一个没有与之关联的规则的侦听套接字端口,Windows防火墙就会提示用户“允许应用程序”。 (即新节目)。但是当用户在确认对话框中单击“允许”时,它将用于整个程序,而不仅仅是一个端口。一旦确认,它通常不会再次提示用户。

对于Java,正在运行的程序是Java.exe。因此,一旦用户单击“允许”运行Java的第一个程序,所有后续Java程序都会在没有提示的情况下启用。我还怀疑Java安装程序也为自己设置了防火墙规则。我好像有几个:

换句话说,您已经注册了Java,因此不会再次收到提示。