LINUX.ORG.RU

Поиск хоста в сети

 ,


0

1

Хочу задать вот какой вопрос. Есть ли в Qt уже реализованный велосипед, который позволяет найти некий ресурс в локальной сети (для примера хостов, слушающих определенный порт). Свой велосипед изобретать очень не хочется.

P.S. Буду рад любым дельным советам.
P.S.S. Быстрое гугление результатов не принесло.


Забыл добавить, что решение нужно кроссплатформенное.



Последнее исправление: Sakura (всего исправлений: 1)

Ответ на: комментарий от strangeman

я так понял, утилитка работает через dbus. Не подойдет, нужно что-то более легкое

Sakura
() автор топика
Ответ на: комментарий от Sakura

броадкаст?
http://qt-project.org/doc/qt-4.8/network-broadcastsender.html
http://qt-project.org/doc/qt-4.8/network-broadcastreceiver.html

если для поиска «не своих» ресурсов, вряд ли есть что-то, сканирующее лучше, чем nmap. Может просто скопировать исходники nmap внутрь твоего проекта? :3

stevejobs ★★★★☆
()
Ответ на: комментарий от dib2

Я так понимаю, что данная библиотечка ищет сервисы у которых включен Zeroconf, и неважно какие это сервисы (сторонние, родные, системные...)?

Sakura
() автор топика
Ответ на: комментарий от Sakura

80й порт apache, например. Это в «своем», собственноручно написанном сервисе можно сделать обработку ответа на «запрос поиска», а чужие сервера наоборот будут прятаться от сканирования сети (см. http://nmap.org/book/man-port-scanning-techniques.html)

stevejobs ★★★★☆
()

Забыл добавить, что решение нужно кроссплатформенное.

дергай nmap через QProcess и анализируй выхлоп. Дешево и сердито и Unix Way

MikeDM ★★★★★
()
Ответ на: комментарий от stevejobs

Теперь понятно. Спасибо, ссылку посмотрю обязательно.

Sakura
() автор топика
Ответ на: комментарий от MikeDM

Дешево, сердито, толсто, баго-рассадник, велосипед. Если других вариантов нет, то буду делать именно так. Просто не люблю я работу с сетью, вот совсем не люблю.

Sakura
() автор топика
Ответ на: комментарий от MikeDM

Багорассадник - в анализе выхлопа.
Велосипед - юзание QProcess.

Я не говорю что это плохо. И я возможно буду этим пользоваться, но если есть возможность использовать что-нибудь более приятное, то грех ей не воспользоваться.

К тому же в венде nMap по дефолту отсутствует, а я лучше буду за собой либу таскать, чем доставлять его.

Sakura
() автор топика
Ответ на: комментарий от Sakura

Багорассадник - в анализе выхлопа.

Кто то регулярки отменял?

Велосипед - юзание QProcess.

Да что вы говорите, велосипед блин. ну ходи пешком на костылях тогда.

MikeDM ★★★★★
()
Ответ на: комментарий от Sakura

Я так понимаю, что данная библиотечка ищет сервисы у которых включен Zeroconf

которые анонсируются через zeroconf

dib2 ★★★★★
()

QTcpSocket. Обойти всю доступную до роутера подсеть, постучаться в интересующие порты.

Suigintou ★★★★★
()
Ответ на: комментарий от Suigintou

Это слишком долго. Не стоит забывать о таймаутах подключения. Даже если на каждую проверку уйдет одна секунда, то среднее время проверки будет около минуты.

Sakura
() автор топика
Ответ на: комментарий от Sakura

Таймауты поменьше задать и стучать сначала в наиболее вероятные порты. Делать сканирование с теми или иными оптимизациями. Тот же апач, слушая свой порт, никуда не анонсирует об этом факте.

Suigintou ★★★★★
()
Последнее исправление: Suigintou (всего исправлений: 1)
Ответ на: комментарий от Sakura

Багорассадник - в анализе выхлопа.
Велосипед - юзание QProcess.

Багорассадник как раз будет, если писать свой код для этого. А nmap уже написан и баги в нём отловлены, и выхлоп у него стандартный, меняется редко по идее. Unix-way не зря придумали

Harald ★★★★★
()
Ответ на: комментарий от Suigintou

Перебор слишком уж в лоб. Тут даже nmap будет лучше.

Sakura
() автор топика
Ответ на: комментарий от Harald

Извиняюсь, но ещё раз про кроссплатформенность. Для венды одна сетупилка nmap весит 26 метров. Так что скорее всего буду обходиться бродкастом или зеро-конфом. Если они не удовлетворят, тогда да, тогда nmap.

Sakura
() автор топика
Ответ на: комментарий от Sakura

Извиняюсь, но ещё раз про кроссплатформенность. Для венды одна сетупилка nmap весит 26 метров.

ну и что? Можно скомпилированный бинарник nmap-а с собой таскать, без инсталлятора (если лицензия позволяет)

Harald ★★★★★
()

В сухом итоге получаем четыре варианта решения:

  • nmap
    • очень не хочется парсить выхлоп
    • под вендой больно много за собой тащить и ставить
  • QTcpSocket и обход всей подсети
    • долго и слишком прямолинейно
  • Qt-шный бродкаст
    • пока сказать нечего
  • QxtZeroconf
    • пока сказать нечего
Sakura
() автор топика
Ответ на: комментарий от Sakura

Спасибо всем отписавшимся за дельные советы.

Sakura
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.