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

Может кто-то привести пример использования функции GetIpAddrTable на C#, а то у меня она почемуто ничего не возвращает
...
Рейтинг: 0 / 0
20.02.2005, 17:11
    #32925104
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
GetIpAddrTable
если нужно получить обязательно через 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
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / GetIpAddrTable / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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