Python计时套接字连接

我期待着花时间完成一个使用TCP的服务器往返旅程。 当使用Windows客户端。 (我会使用ping,但服务器阻止了这一点)

我正在看使用Python和套接字来完成这一点,我现在有。

import time import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM ) start = time.time() s.connect(('localhost',80)) print 'time taken ', time.time()-start ,' seconds' s.close() 

我的问题是我不认为连接计时器正在工作,因为我经常得到相同的时间戳返回。 有人能指出我正确的方向来解决这个问题。

在窗口上, time.time()值没有足够的粒度(只有1/60秒)。 使用time.clock() ,窗口上有1/100秒的分辨率,而不是:

 start = time.clock() s.connect(('localhost',80)) print 'time taken ', time.clock()-start ,' seconds' 

或者,为了实现这个跨平台:

 import sys timer = time.clock if sys.platform == 'win32' else time.time start = timer() # etc. 

这与timeit模块做出的决定是一样的。 您也可以使用.default_timer()定义:

 import timeit start = timeit.default_timer() # etc. 

通过以下修改的脚本,我得到了与Windows 7上的ping相同的结果。

 import time import socket while True: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM ) start = time.time() s.connect(('www.google.at',80)) print 'time taken ', (time.time()-start)*1000 ,' ms' s.close() time.sleep(1) 

Ping我的本地主机总是给我相同的非常小的价值。 这可能是问题。