Подтвердить что ты не робот

Как "Ping" из приложения Node.js?

Я хочу выполнить ping-сервер из моего приложения node.js.

Это выполнимо?

Спасибо

4b9b3361

Ответ 1

Вы можете использовать exec для вызова команды ping системы

var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ping -c 3 localhost", puts);

Ответ 2

node-net-ping - это удивительный модуль, который использует сырые сокеты.

И, если вы ищете только сырые сокеты, у того же разработчика есть модуль для этого: node-raw-socket.

Ответ 3

Выполнение ping (программируемое) требует привилегий root, потому что для него требуются сокеты raws, которые требуют доступа root. Вы можете выполнить ping, следуя фрагменту Gradwohl, но имейте в виду, что вы открываете новый процесс, который является дорогостоящим (относительно). Если вам не нужно делать это много (concurrency), это определенно будет работать:)

Чтобы сделать это в node.js(только) без процесса наложения, я думаю, у вас есть несколько вариантов, которые трудно реализовать:()

Не (только) с помощью node.js:

  • use python ping library работает под управлением root и общается с node.js экземпляром через redis. = > EASIEST для реализации (вряд ли любая работа, но я думаю довольно быстро:))
  • снова напишите c (++) код, используя asio С++, но вместо того, чтобы писать node.js, обмениваться через hiredis с node.js, который также использует redis.

Как примечание, как использовать redis на node.js:

Ответ 4

Я автор ping-wrapper.

Он запускает ping, и вы можете слушать события немедленно. Если процесс завершается, он будет автоматически запускаться.

Ответ 5

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

https://github.com/bscarvell/pingwrap

Ответ 6

Вы также можете использовать my nodejs ping wrapper yaping. Однажды мы получим сырые сокеты в nodejs, и мы сможем сделать наши собственные пакеты ping и лежать о времени отклика.; -)

Эта простая функция должна

  • do dns lookups
  • ping once
  • таймаут через 10 секунд
  • сообщать все коды ошибок, которые ping предоставляет
  • порождать дочерние процессы вне брака