C#
private void
BtnConnessioniAttive_Click(object sender,
EventArgs e)
{
DataColumn dtcNomeProcesso = new DataColumn("Nome
Processo", typeof(string));
DataColumn dtcPid = new DataColumn("PID", typeof(string));
DataColumn dtcIpRemoto = new DataColumn("Ip remoto", typeof(string));
DataColumn dtcStato = new DataColumn("Stato", typeof(string));
DataTable dttDati = new DataTable();
dttDati.Columns.Add(dtcNomeProcesso);
dttDati.Columns.Add(dtcPid);
dttDati.Columns.Add(dtcIpRemoto);
dttDati.Columns.Add(dtcStato);
Process netstat = new Process();
netstat.StartInfo.FileName = "netstat";
netstat.StartInfo.Arguments = "-n -o"; // -n: IP numerici, -o: mostra PID
netstat.StartInfo.UseShellExecute
= false;
netstat.StartInfo.RedirectStandardOutput = true;
netstat.StartInfo.CreateNoWindow = true;
netstat.Start();
string output = netstat.StandardOutput.ReadToEnd();
netstat.WaitForExit();
var righe = output.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var linea in righe)
{
if (linea.StartsWith(" TCP") || linea.StartsWith(" UDP"))
{
var parts = Regex.Split(linea.Trim(), @"\s+");
if (parts.Length >= 5)
{
string ipRemoto = parts[2];
string stato = parts[3];
string pid = parts[4];
//Non tiene conto delle connessioni locali
if (!ipRemoto.StartsWith("127.") && !ipRemoto.StartsWith("::1") && ipRemoto != "0.0.0.0:0")
{
try
{
DataRow riga = dttDati.NewRow();
var process = Process.GetProcessById(int.Parse(pid));
riga["Nome Processo"] = process.ProcessName;
riga["PID"] = pid;
riga["Ip remoto"] = ipRemoto;
riga["Stato"] = stato;
dttDati.Rows.Add(riga);
}
catch (Exception ex)
{
MessageBox.Show("Errore: " + ex.Message);
}
dataGridView1.DataSource =
dttDati;
}
}
}
}

Le opere pubblicate in questo blog sono sotto la licenza Creative Commons. Attribuzione- No commerciale e no derivate.
Nessun commento:
Posta un commento