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

Firewall Not asking Permission to open the port

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

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();
    }
}

Windows 防火墙会提示用户 "allow an application" 每当它看到程序打开没有关联规则的侦听套接字端口时。 (即新程序)。但是当用户在确认对话框中点击 "allow" 时,它是针对整个程序的,而不仅仅是一个端口。一旦给出确认,它通常不会再次提示用户。

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

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