private ListViewItem InitTcpItem(TcpRecordPid tcprecord)
        {
            if (tcprecord == null)
                return null;

            ListViewItem item = new ListViewItem(tcprecord.LocalPort.ToString());
            item.SubItems.Add(tcprecord.Protocol);
            item.SubItems.Add(tcprecord.LocalAddress.ToString());
            item.SubItems.Add(tcprecord.RemoteAddress.ToString());
            item.SubItems.Add(tcprecord.RemotePort.ToString());
            item.SubItems.Add(tcprecord.State.ToString());
            item.SubItems.Add(tcprecord.PID.ToString());
            item.SubItems.Add(tcprecord.ProcessName);
            item.Name = tcprecord.GetHashCode().ToString();

            return item;
        }
        public static string FindProcessNameByTcpConnection(IPAddress sourceAddress, IPAddress destinationAddress, ushort sourcePort, ushort destinationPort, IPAddress localIP)
        {
            List <TcpRecordPid> tcpRecords = null;
            ushort    port;
            IPAddress address;

            if (localIP == sourceAddress)
            {
                port    = sourcePort;
                address = sourceAddress;
            }
            else
            {
                port    = destinationPort;
                address = destinationAddress;
            }
            if ((tcpRecords = NetworkStatisticData.GetAllTcpConnections()) != null && tcpRecords.Count > 0)
            {
                TcpRecordPid record = tcpRecords.Where(r => r.LocalPort == port).SingleOrDefault();
                if (record != null)
                {
                    return(record.PID.ToString());

                    //if (record.PID == 0)
                    //    return "System";
                    //else
                    //{
                    //    Process proc = null;
                    //    if ((proc = FindProcessByPid(record.PID)) != null)
                    //        return proc.ProcessName;
                    //    else
                    //        return "N/A";
                    //}
                }
            }

            return(String.Empty);
        }