考虑以下R脚本:
con <- socketConnection(host = "localhost", port = 8, server = TRUE, blocking = TRUE, open = "a+b")
close(con = con)
Run Code Online (Sandbox Code Playgroud)
将这些行保存为.R文件,然后从命令行运行它会产生(在Windows上)防火墙警告.至少,如果在第一次出现的"高级安全Windows防火墙"下没有R规则.我被告知在Mac上发生同样的情况,但我自己也无法验证.如何更改以允许localhost环回但避免弹出窗口?
上下文:我为使用并行处理的人(在一台本地机器上)编写了一些代码.然而,这个警告突然出现在他们的屏幕上,他们开始怀疑.愚蠢的是,即使人们点击否或忽略弹出窗口,并行处理似乎仍然有效.我认为这是一个迹象,表明可以修改此代码,以便不提供此弹出窗口并仍然可以正常运行.
我已经看到了在其他语言非常类似的问题(1,2,3),我想知道是否有可能做R.相同
我编写了一个简单的Java应用程序,它使用套接字与自身的多个实例进行交互.第一个实例自动承担服务器的角色,侦听特定端口,并且所有后续实例都连接到它.
我遇到的问题是Windows防火墙弹出询问我是否要取消阻止该程序"接受传入的网络连接".问题是:如果您将应用程序阻止,则无关紧要,因为应用程序的实例始终位于同一台计算机上,因此它始终有效.
我的问题是:我能否以某种方式告知Windows我甚至不希望接受传入的网络连接?
我有一个SocketServer接受传入的连接.出于安全原因,我应该只允许本地连接(来自运行服务器的计算机的连接).
如何确定传入连接是否来自其他计算机?以下代码是否安全?
Socket socket = someServerSocket.accept();
String remoteAddress = socket .getInetAddress().getHostAddress();
if (!fromThisMachine(remoteAddress)) {
// Not from this machine.
}
Run Code Online (Sandbox Code Playgroud)
虽然fromThisMachine()方法是这样的:
public boolean fromThisMachine(String remoteAddress) {
try {
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
while (interfaces.hasMoreElements()) {
NetworkInterface networkInterface = interfaces.nextElement();
Enumeration<InetAddress> addresses = networkInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
InetAddress inetAddress = addresses.nextElement();
String hostName = inetAddress.getHostName();
String hostAddr = inetAddress.getHostAddress();
if (hostName.equals(remoteAddress) || hostAddr.equals(remoteAddress)) {
return true;
}
}
}
} catch (Exception e) {
e.printStackTrace();
return false;
}
log("Unauthorized …Run Code Online (Sandbox Code Playgroud)