Python服务器响应代码

Python服务器响应代码,python,multithreading,http,ip,httpresponse,Python,Multithreading,Http,Ip,Httpresponse,在python中是否有方法检查指定ip范围(1.1.1.1-1.1.1.254)的头中的服务器响应代码(200301404)甚至可能是多线程的 p.S.发现“HTTPResponse.status”对象是可能的(http://docs.python.org/library/httplib.html)我现在如何用它检查ip范围 另外,最好先检查端口80是否打开,然后只测试端口打开的端口。我认为这样会加快速度,因为254个ip可能有30个端口正在使用端口80。您可以尝试通过正常的GET请求连接到主机

在python中是否有方法检查指定ip范围(1.1.1.1-1.1.1.254)的头中的服务器响应代码(200301404)甚至可能是多线程的

p.S.发现“HTTPResponse.status”对象是可能的(http://docs.python.org/library/httplib.html)我现在如何用它检查ip范围


另外,最好先检查端口80是否打开,然后只测试端口打开的端口。我认为这样会加快速度,因为254个ip可能有30个端口正在使用端口80。

您可以尝试通过正常的GET请求连接到主机的根目录,只需短暂超时(如果您想让它等待更长的时间,可以使用更长的时间)。然后您可以在地图中运行它

import httplib
from multiprocessing import Pool

def test_ip(addr):
    conn = httplib.HTTPConnection(addr, timeout=1)
    try: 
        conn.request("GET", "/")
    except:
        return addr, httplib.REQUEST_TIMEOUT
    else:
        resp = conn.getresponse()
        return addr, resp.status
    finally:
        conn.close()

p = Pool(20)

results = p.map(test_ip, ["1.1.1.%d" % d for d in range(1,255)], chunksize=10)
print results

# [('1.1.1.1', 408), ('1.1.1.2', 408), ...]

调整
Pool
大小和
chunksize
以适应。

感谢您的代码,但请不要运行此脚本:)它将我的电脑冻结了2次。它会启动数千个进程,甚至当你关闭它时,它也会继续。我有一台相当不错的电脑(4*4,0 GHz 8GB内存),但它对我不起作用:)或者我做错了什么吗?我将池大小调整到最小,但仍然会杀死我的电脑:(你是认真的吗?它只会启动池(大小)进程数。如果将其设置为1,则只应为1。对我来说效果很好。我建议打开一个shell,简单地创建和池,然后检查您的进程监视器,查看创建了多少个python进程。它们在创建池时被初始化