public static string FindProcessNameByUDpConnection(IPAddress sourceAddress, IPAddress destinationAddress, ushort sourcePort, ushort destinationPort, IPAddress localIP)
        {
            List <UdpRecordPid> udpRecords = null;
            ushort    port;
            IPAddress address;

            if (localIP == sourceAddress)
            {
                port    = sourcePort;
                address = sourceAddress;
            }
            else
            {
                port    = destinationPort;
                address = destinationAddress;
            }

            if ((udpRecords = NetworkStatisticData.GetAllUdpConnections()) != null)
            {
                UdpRecordPid record = udpRecords.Where(r => r.LocalPort == port).SingleOrDefault();
                if (record != null)
                {
                    return(record.PID.ToString());
                }
            }

            return(String.Empty);
        }
        private ListViewItem InitUdpItem(UdpRecordPid udprecord)
        {
            if (udprecord == null)
                return null;

            ListViewItem item = new ListViewItem(udprecord.LocalPort.ToString());
            item.SubItems.Add(udprecord.Protocol);
            item.SubItems.Add(udprecord.LocalAddress.ToString());
            item.SubItems.Add("0.0.0.0");
            item.SubItems.Add("0.0.0.0");
            item.SubItems.Add("0");
            item.SubItems.Add(udprecord.PID.ToString());
            item.SubItems.Add(udprecord.ProcessName);
            item.Name = udprecord.GetHashCode().ToString();

            return item;
        }