Detect if windows firewall is blocking my program
To detect if the ports are blocked - on Win7 you can view the Window Firewall logs by opening Windows Firewall - click Advanced Settings on the left-side and then open the Monitoring branch.
Note on the Monitoring tab in the Logging Settings section there is an option to log to file which on my Win7 PC is %systemroot%\system32\LogFiles\Firewall\pfirewall.log
- you could just parse this file. I have researched in the past and there are utilities out there to do this for you, however, at the end of the day it's just a standard format log file.
The firewall manager exposes itself via COM and implements an IsPortAllowed
.
You can do it like this I think: give it a try: Change 1433 for the port you want to check.
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);
}
}
}
}
Also, to see which ports are available in your machine run:
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