美文网首页
用python开启临时http服务器及其ipv6支持

用python开启临时http服务器及其ipv6支持

作者: 生命在于折腾已被使用 | 来源:发表于2017-02-25 10:23 被阅读2404次

    python可以只用一行代码创建简单的http服务器,用来把linux的vps中文件拖回本地非常方便
    高校的同学也可以用这个方法,通过ipv6给同学分享文件

    pyhton3

    python -m http.server
    之后会看到输出Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

    pyhton2

    python -m SimpleHTTPServer
    之后会看到输出Serving HTTP on 0.0.0.0 port 8000 ...
    之后在浏览器地址栏输入 ip地址:端口 即可访问

    但是问题来了,无论py2还是py3,默认都不支持ipv6

    为了解决ipv6支持的问题,2、3的方法还是略有区别

    python3

    python3安装目录/lib/http/server.py 的如下位置添加带有加号的两行
    就是把
    server_address = (bind, port) HandlerClass.protocol_version = protocol
    改成
    server_address = (bind, port) if ':' in bind: ServerClass.address_family = socket.AF_INET6 HandlerClass.protocol_version = protocol
    然后代码
    python -m http.server -b [::]
    之后会看到输出Serving HTTP on :: port 8000 (http://:::8000/) ...

    python2

    不用修改文件,直接一行代码
    python -c "import socket,SocketServer,CGIHTTPServer;SocketServer.TCPServer.address_family=socket.AF_INET6;CGIHTTPServer.test()" 8080
    之后会看到输出Serving HTTP on :: port 8080 ...
    实际上py2的这一行代码,是有如下三行的脚本文件生成的,python调用这个脚本,8080为其参数,是端口

    import socket,SocketServer,CGIHTTPServer
    SocketServer.TCPServer.address_family=socket.AF_INET6
    CGIHTTPServer.test()
    

    注意

    1.浏览器访问ipv6地址需要加方括号
    [ipv6地址]:端口

    2.文件分享的路径就是命令行当前工作目录

    3.代码运行在操作系统命令行,不是python命令行,例如win的cmd或者powershell,linux的bash命令行等

    4.以上方法均来自互联网非本人原创
    感谢原作者搞出这么方便的东西!

    相关文章

      网友评论

          本文标题:用python开启临时http服务器及其ipv6支持

          本文链接:https://www.haomeiwen.com/subject/bbuwwttx.html