私はPythonでアプリケーションを持っていますが、(アプリケーションを実行している)コンピュータが別のリモートコンピュータからオンになっているかどうかを知りたいと思います。Python - リモートコンピュータがオンになっているかどうかを検出する
これを行う方法はありますか?私は、UDPパケットを使用して、カウンタを使用して何らかのキープアライブを送信することを考えていました。 Ex。 5分ごとに、クライアントはUDP「キープアライブ」パケットをサーバーに送信します。前もって感謝します!
私はPythonでアプリケーションを持っていますが、(アプリケーションを実行している)コンピュータが別のリモートコンピュータからオンになっているかどうかを知りたいと思います。Python - リモートコンピュータがオンになっているかどうかを検出する
これを行う方法はありますか?私は、UDPパケットを使用して、カウンタを使用して何らかのキープアライブを送信することを考えていました。 Ex。 5分ごとに、クライアントはUDP「キープアライブ」パケットをサーバーに送信します。前もって感謝します!
はいそうです。ハートビートpingを送るようなもの。そのUDP以来、そしてそのちょうどヘッダーメッセージ以来、あなたは10秒と言う頻度を減らすことができます。これは、私たちが話しているシステムが2つしかないため、測定可能なシステム性能の低下を引き起こすべきではありません。
私はここで、UDPはTCPに比べて良いかもしれないと感じています。軽量で、多くのシステムリソースを消費せず、理論的には高速です。欠点は、パケットロスが発生する可能性があることです。 10パケット(10秒離れている)が連続して受信されず、他のシステムが到達不能であると宣言されるようなロジックを入れることで回避できます。
ちょっとそれは私の答えだった:) –
最初に、コンピュータがオンかどうかを判断する標準的な方法がないことを認識する必要があります。これは言語/プラットフォームに依存しません。コンピュータは、あなたがチェックしようとしている状態を偽造することができます。
しかし、は、コンピュータがオンかどうかを確認するためにPing(ICMPエコー要求)を送信しています。 This answerは、Pythonを使ってPingを送信する方法を示しています。
アプリにWebサーバーを追加します。
あなたの目標は、実際に特定のサービスは、リモート・マシン上で実行されているかどうかをテストする場合、このサービスは、上で実行する必要があるネットワークポートが到達可能である場合は、テストすることができ。例:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(('hostname', 22))
print "Port 22 reachable"
except socket.error as e:
print "Error on connect: %s" % e
s.close()
テストするアプリケーションが、このポートを確認してください。
Windowsマシンのためには動作していない –
あなたのアイデアは正しい方向にあると思いますが、これまでに何を試しましたか? –
タイトルが誤解を招くか、アプリケーションが実行中かどうかを検出したいだけです。後であれば、どんな種類のpingでもやります。 – Ma3x
私はw/@ Ma3xに同意しますが、この質問にはPythonを使用することはほとんどありません。 – Sabuncu