Перечисление открытых сетевых портов - C#
Формулировка задачи:
приветствую, нужна помощь знающих людей. есть задача, а именно нужно написать в форме программу, с использованием winAPI которая будет показывать открытые сетевые порты, сколько времени открыт порт, информацию (путь, версии, имя (это основное)...).
сам никогда с winAPI не работал, вообще не знаю что да как. если мой вопрос носит исчерпывающий характер, то прошу скинуть ссылку где есть подобная проблема. может у кого есть какие-нибудь наработки что поможет мне в изучении текущей задачи. в любом случае спасибо!
на данный момент курирую MSDN и google, но продвижений нет(
Решение задачи: «Перечисление открытых сетевых портов»
textual
Листинг программы
[DllImport( "Ws2_32.dll", SetLastError = true, CharSet = CharSet.Ansi )] static extern string inet_ntoa ( [In] IN_ADDR in_addr ); [DllImport( "ntdll.dll", SetLastError = true, CharSet = CharSet.Unicode )] unsafe private static extern IntPtr RtlIpv4AddressToString ( uint* Addr, StringBuilder S ); unsafe static void Main ( string[] args ) { MIB_TCPROW2[] tcpRows; IN_ADDR in_addr0 = new IN_ADDR(), in_addr1 = new IN_ADDR(); do { tcpRows = GetTcpRows(); Console.Clear(); Console.WriteLine( "Process\t\tPID\tProtocol\tLocal Address\tLocal Port\tRemote Address\tRemote Port\tState\tOffload State" ); for ( int i = tcpRows.Length - 1; i >= 0; i-- ) { //if ( Process.GetProcessById( (int)tcpRows[i].dwOwningPid ).ProcessName == "uTorrent" ) //{ //// RtlIpv4AddressToString //StringBuilder addr0 = new StringBuilder( 16 ), // addr1 = new StringBuilder( 16 ); //var addr = tcpRows[i].dwLocalAddr; //RtlIpv4AddressToString( &addr, addr0 ); //addr = tcpRows[i].dwRemoteAddr; //RtlIpv4AddressToString( &addr, addr1 ); in_addr0.S_addr = tcpRows[i].dwLocalAddr; in_addr1.S_addr = tcpRows[i].dwRemoteAddr; Console.WriteLine( string.Format( "{0}\t{1}\t{2}\t\t{3}\t{4}\t\t{5}\t{6}\t{7}\t{8}", Process.GetProcessById( (int)tcpRows[i].dwOwningPid ).ProcessName, tcpRows[i].dwOwningPid, "TCP", //addr0, string.Format( "{0}.{1}.{2}.{3}", in_addr0.S_un_b.s_b1, in_addr0.S_un_b.s_b2, in_addr0.S_un_b.s_b3, in_addr0.S_un_b.s_b4 ), ntohs( (ushort)tcpRows[i].dwLocalPort ), //addr1, string.Format( "{0}.{1}.{2}.{3}", in_addr1.S_un_b.s_b1, in_addr1.S_un_b.s_b2, in_addr1.S_un_b.s_b3, in_addr1.S_un_b.s_b4 ), ntohs( (ushort)tcpRows[i].dwRemotePort ), tcpRows[i].dwState, tcpRows[i].dwOffloadState ) ); //} } } while ( Console.ReadLine() != "end" ); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д