2016-10-17 10 views
1

В библиотеке Core есть функция Linux_ext.get_ipv4_address_for_interface, которая возвращает IP-адрес, назначенный определенному сетевому интерфейсу. Есть ли простой способ сделать то же самое, используя только стандартную библиотеку и не делая fork для чтения содержимого ifconfig или ip addr show?Получить IP-адрес для определенного интерфейса в OCaml

+1

(Я думаю, что быстрый ответ - нет. Базовый язык OCaml не имеет такого низкоуровневого сетевого API.) –

ответ

2

В абстрактной машине OCaml не содержится понятия сетевого интерфейса, поэтому реализовать такое поведение с помощью переносной части стандартной библиотеки OCaml невозможно, не полагаясь на интерфейсы, специфичные для ОС.

На самом деле это невозможно даже в C. Поскольку интерфейс специфичен для ядра, поэтому для написания такой функции вам потребуется написать отдельную реализацию для каждой системы Unix, которую вы планируете настраивать. For example, в C вам нужно будет использовать интерфейс ioctl и использовать операции с конкретным ядром Linux.

Хорошей новостью является то, что вы все еще можете сделать это с помощью OCaml. Хотя OCaml не предоставляет функцию ioctl, вы все равно можете позвонить через либо через внешний интерфейс функции C Types, либо напрямую, по writing a stub function.

+0

Извините, вместо «Pervasive» я имел в виду все модули стандартной библиотеки : нет внешней библиотеки. Я редактирую свой вопрос. Спасибо за Ваш ответ –

 Смежные вопросы

  • Нет связанных вопросов^_^