Что такое эквивалент функции inet_addr в C # - PullRequest
2 голосов
/ 17 мая 2010

Мне нужно знать, как использовать IP-адрес, например, inet_addr ("192.168.0.2"); в C ++ где это возвращает DWORD. Моя оболочка в C # рассматривает это поле как Int?

Может кто-нибудь помочь с этим недоразумением?

Ответы [ 2 ]

4 голосов
/ 17 мая 2010

Вы должны использовать класс IPAddress. Это будет немного беспокоить вас, потому что он пытается предотвратить зависимость от IP4-адресов. Адрес участника объявляется устаревшим. Вот обходной путь:

using System;
using System.Net;

class Program {
    static void Main(string[] args) {
        var addr = IPAddress.Parse("192.168.0.2");
        int ip4 = BitConverter.ToInt32((addr.GetAddressBytes()), 0);
        Console.WriteLine("{0:X8}", ip4);
        Console.ReadLine();
    }
}

Выход: 0200A8C0

Обратите внимание, что адрес находится в правильном сетевом порядке (порядковый номер)

0 голосов
/ 17 мая 2010

Ну, если это .net Я предполагаю, что это немного порядковый компьютер, чтобы вы могли "сделать" это следующим образом:

address = (192 << 0) | (168 << 8) | (0 << 16) | (2 << 24);

Я почти уверен, что это правильно:)

...