2016-06-15 16 views
0

私はインターネットに接続しているかどうかを教えてくれるプログラムを作っています。今すぐwww.google.comにpingして、ping時間をmsで表示します。私はサードパーティのソフトウェアを使用したり、何かをダウンロードしたりすることは望ましくありません。Pythonでping時間を取得する

編集: 私のコードは次のとおりです。

def is_connected(): 
    try: 
    # see if we can resolve the host name -- tells us if there is 
    # a DNS listening 
    host = socket.gethostbyname(REMOTE_SERVER) 
    # connect to the host -- tells us if the host is actually 
    # reachable 
    s = socket.create_connection((host, 80), 2) 
    return True 
    except: 
     pass 
    return False 

私がインターネットに接続されていた場合、上記のコードは、ちょうど私に語りました。 私が望むのは、ウェブサイトのpingを表示する簡単な方法です。 これは私の質問に答えるものではないので、重複していません。

+1

あなたのコードはどこですか?そして、あなたは私たちから何を求めていますか? :) –

+0

だから、あなたの質問は "私は何かを完全にしているコードを持っています。私がやりたいことをする方法を教えてください"という話題です。答えを正しく読まない)。 – tripleee

+0

pingを実行するためのPythonライブラリがいくつか存在します。あなたがそれらを使いたくない場合でも、Git reposにあります。あなたはソースコードを見ましたか? –

答えて

2

pingがではない HTTP接続と同じもの!最初は、接続をテストし、主にローカルネットワーク上でラウンドトリップ時間を見つけるために使用される低レベルのICMPパケットです。一般的に広域インターネットでは使用されていません。なぜなら、セキュリティ上の理由から、ファイアウォールや外部ルータによってブロックされることが多いからです。

サーバーへの接続を確立するために必要な時間を知りたい場合は、現実世界で何をしているのかを確認してください。時計を見て、仕事をしてください。時計を見直して経過時間を確認してください。 Pythonでそれは与える

#import time 
... 
def connect_time(): 
    try: 
    # see if we can resolve the host name -- tells us if there is 
    # a DNS listening 
    host = socket.gethostbyname(REMOTE_SERVER) 
    # connect to the host -- tells us if the host is actually 
    # reachable 
    before = time.clock()  # from Python 3.3 and above use before = time.perf_counter() 
    s = socket.create_connection((host, 80), 2) 
    after = time.clock()  # from Python 3.3 and above use after = time.perf_counter() 
    return after - before 
    except: 
    return -1 
+0

これを実行すると、 また、正確には正確ではないので、コマンドを実行するのに要する時間がわかります。 –

+0

@IanStegner:関数呼び出しで括弧を忘れていませんか?あなたはいつ何時に欲しいのですか? –

+0

ええ、括弧を忘れましたが、今は-1しか得られません。私が望む時間はミリ秒です。 –