powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / GetIpAddrTable
2 сообщений из 2, страница 1 из 1
GetIpAddrTable
    #32925096
ooops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Может кто-то привести пример использования функции GetIpAddrTable на C#, а то у меня она почемуто ничего не возвращает
...
Рейтинг: 0 / 0
GetIpAddrTable
    #32925104
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если нужно получить обязательно через IP Helper, то можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
using System;
using System.Net;
using System.Runtime.InteropServices;

namespace IpAddressTable
{
  class IpAddressTableClass
  {
    [DllImport("iphlpapi.dll")]
    public static extern int GetIpAddrTable(IntPtr pIpAddrTable, ref int pdwSize, bool bOrder);

    public struct MIB_IPADDRROW
    { public int    dwAddr;
      public int    dwIndex;
      public int    dwMask;
      public int    dwBCastAddr;
      public int    dwReasmSize;
      public short  unused1;
      public short  unused2;
    }

    [STAThread]
    static void Main(string[] args)
    {
      int     size=0;
      IntPtr  buff=IntPtr.Zero;
      // получить размер буфера для PMIB_IPADDRTABLE:
      GetIpAddrTable(IntPtr.Zero, ref size, false);
      try
      {
        buff=Marshal.AllocHGlobal(size);
        // получить массив MIB_IPADDRROW
        if(GetIpAddrTable(buff, ref size, false)==0 && size>=4)
        {
          int           num=Marshal.ReadInt32(buff);

          for(int k=0, ptr=(int)buff+4; k<num; k++, ptr+=Marshal.SizeOf(typeof(MIB_IPADDRROW)))
          {
            MIB_IPADDRROW row=(MIB_IPADDRROW)Marshal.PtrToStructure((IntPtr)ptr, typeof(MIB_IPADDRROW));

            IPAddress adr=new IPAddress((long)row.dwAddr),
                      msk=new IPAddress((long)row.dwMask);
            Console.WriteLine("IP {0} mask {1}", adr, msk);
          }
        }
      }
      finally
      {
        if(buff!=IntPtr.Zero) Marshal.FreeHGlobal(buff);
      }
    }
  }
}
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / GetIpAddrTable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]