【问题标题】:Firewall Not asking Permission to open the port防火墙不要求打开端口的权限
【发布时间】:2016-11-21 11:43:56
【问题描述】:

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

我的代码

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

【问题讨论】:

  • 你确定防火墙关心你是否打开端口?它不应该拦截所有到端口的连接请求吗?
  • 你的代码会抛出异常吗?如果没有,你可以和另一端通信,那么没有问题。
  • @ThomasStets 当我们安装像 ApacheTomcat 这样的服务器时,防火墙会弹出并询问允许访问的权限。这就是我认为当我们编写一个程序来打开/创建一个端口时它应该弹出的原因。
  • 一旦您给予许可,它就不会再询问。与java 无关,也与计算机编程无关。离题。

标签: windows-firewall


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2014-09-03
    • 2015-01-02
    • 1970-01-01
    • 2013-12-02
    • 2012-08-16
    相关资源
    最近更新 更多