在python中获取ping时间

在python中获取ping时间,python,windows,python-3.x,Python,Windows,Python 3.x,我制作了一个程序,告诉我是否连接到互联网。现在我想让它ping www.google.com并以毫秒为单位显示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_SER

我制作了一个程序,告诉我是否连接到互联网。现在我想让它ping www.google.com并以毫秒为单位显示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
上面的代码只是告诉我是否连接到internet。 我想要的是一个简单的方式来显示一个网站的ping。
这不是重复的,因为它没有回答我的问题。

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

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

你的密码在哪里?你到底想从我们这里得到什么?:)因此,现在您的问题是“我有代码,它可以做完全不同的事情,请告诉我如何做我想做的事情”,这也是离题的(但重复的答案也是如此;您只是没有正确阅读答案)。它存在一些用于执行ping的Python库。即使你不想使用它们,它们也在Git回购上。你看过他们的源代码了吗?@tripleee我的问题一直是“我有完全不同的代码,请告诉我如何做我想做的事情”。另外,“复制”并没有给出我想要的。那么你应该澄清你想要什么,以及你发布的代码是如何试图达到这个目标的。该副本有一个纯python实现的
ping
,它创建ICMP数据包并对其进行计时;如果那不是你想要的,你想要什么?注意,我们会遇到很多问题,海报想要“ping”一个“网站”,但术语不匹配。一个网站有一个IP地址,你可以使用它,但这样做并不表明该网站是否实际运行。你的代码在哪里?你到底想从我们这里得到什么?:)因此,现在您的问题是“我有代码,它可以做完全不同的事情,请告诉我如何做我想做的事情”,这也是离题的(但重复的答案也是如此;您只是没有正确阅读答案)。它存在一些用于执行ping的Python库。即使你不想使用它们,它们也在Git回购上。你看过他们的源代码了吗?@tripleee我的问题一直是“我有完全不同的代码,请告诉我如何做我想做的事情”。另外,“复制”并没有给出我想要的。那么你应该澄清你想要什么,以及你发布的代码是如何试图达到这个目标的。该副本有一个纯python实现的
ping
,它创建ICMP数据包并对其进行计时;如果那不是你想要的,你想要什么?注意,我们会遇到很多问题,海报想要“ping”一个“网站”,但术语不匹配。一个网站有一个IP地址,您可以对此进行ping,但这样做并不表明该网站是否实际运行。当我运行该地址时,我还发现,这并不准确,因为它会给我运行命令所需的时间。@IanStegner:您会忘记函数调用中的括号吗?你到底要几点?是的,我忘了括号,但现在我只得到-1。我想要的时间是毫秒。@IanStegner-1表示无法建立连接。时间是以秒为单位的浮点数,所以你应该乘以1000…socket的定义在哪里?当我运行它时,我也得到了,这并不准确,因为它会给我命令运行所需的时间。@IanStegner:你会忘记函数调用中的括号吗?你到底要几点?是的,我忘了括号,但现在我只得到-1。我想要的时间是毫秒。@IanStegner-1表示无法建立连接。时间是以秒为单位的浮点值,因此您应该乘以1000…在哪里定义了
socket