我有一个通过api与NetApp设备通信的应用程序。启用Windows防火墙后,api命令将失败。关闭防火墙后,api命令可以正常工作。我没有收到任何消息,如“Windows防火墙阻止此程序”。
查看文档我相信我发现需要打开的TCP端口才能使api命令工作。如何以编程方式检测端口是否被阻塞,以便我可以向用户显示有关潜在问题的消息?
答案 0 :(得分:11)
防火墙管理器通过COM公开自己并实现IsPortAllowed
,这里是与管理员交互的interop example。
答案 1 :(得分:8)
我认为你可以这样做:尝试一下: 更改要检查的端口的1433.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
namespace CheckPortStatus
{
class Program
{
static void Main(string[] args)
{
try
{
TcpClient tcp = new TcpClient();
tcp.Connect("localhost", Convert.ToInt16(1433));
Console.WriteLine("online");
}
catch (Exception ex)
{
Console.WriteLine("offline");
Console.WriteLine(ex.Message);
}
}
}
}
另外,要查看机器运行中可用的端口:
C:> netstat -an | find / i“listening”
TCP 0.0.0.0:25 0.0.0.0:0 LISTENING
TCP 0.0.0.0:80 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
答案 2 :(得分:3)
要检测端口是否被阻止 - 在Win7上,您可以通过打开Windows防火墙查看窗口防火墙日志 - 单击左侧的“高级设置”,然后打开“监控”分支。
请注意,在“日志记录设置”部分的“监视”选项卡上,有一个选项可以登录到我的Win7 PC上%systemroot%\system32\LogFiles\Firewall\pfirewall.log
的文件 - 您可以解析此文件。我在过去已经研究过,并且有一些实用工具可以帮助你,但是,在一天结束时它只是一个标准格式的日志文件。
答案 3 :(得分:1)
我怀疑防火墙会提到它阻止了应用程序,否则入侵者可以获得有关阻止他访问系统的信息:-)。
通常,防火墙会尝试连接计算机和计算机,无论是否成功,都可以检查。
<强>更新* 强>
您可以在网络中尝试Acknowledgement。如果您在一定时间内没有收到任何信息,那么您可以放心地说连接存在问题。