Я пытаюсь написать простую функцию пинга C++, чтобы узнать, отвечает ли сетевой адрес. Мне не нужен ICMP специально, мне просто нужно посмотреть, есть ли сервер и что на что ответить. Я занимаюсь некоторыми исследованиями, и каждое решение, которое я придумал, требует создания сырого сокета или чего-то, что требует, чтобы программа имела доступ к sudo. Я не буду в состоянии гарантировать, что система, в которой я запускаю это, сможет изменить сетевой стек, поэтому это недопустимо.C++ ping-like функция без доступа суперпользователя
Вот некоторые связанные вопросы, на которые я уже посмотрел.
- Opening RAW sockets in linux without being superuser
- ICMP sockets (linux)
- How to Ping Using Sockets Library - C
- Why does ping work without administrator privileges?
- C++ Boost.asio Ping
Оказывается, что пинг требуется доступ суперпользователя к хорошей причине. Я не хочу целенаправленно создавать лазейку безопасности, я просто хочу посмотреть, отвечает ли сервер. Есть ли хорошая функция или ресурс C++, который может это сделать? Я обязательно отправлю любое пробное решение, которое я придумал. Мне нужно решение для Linux (BSD). Поскольку почти каждая unix-подобная система запускает SSH, я могу даже просто протестировать ее против порта 22. Я собираюсь ориентироваться только на Linux-системы как ограничение.
Благодаря
Похоже, вы уже пробовали очевидный подход и врезался в стену из-за ограничений доступа. Итак, какие другие подходы вы можете придумать? Этот вопрос слишком широк, если вы просите нас перечислить те, о которых мы можем думать. –
Было бы слишком тяжело, чтобы выполнить программу 'ping' и разобрать выход? – 01d55
Хорошая точка. Я могу использовать popen и записывать его в строку. Позвольте мне взломать примерное решение кода. Это не так элегантно, как я думал, но нищие не могут быть выборами. – msmith81886