upnp.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:server 作者: happypandax 项目源码 文件源码
def perform_m_search(local_ip):
    """
    Broadcast a UDP SSDP M-SEARCH packet and return response.
    """
    search_target = "urn:schemas-upnp-org:device:InternetGatewayDevice:1"

    ssdp_request = ''.join(
        ['M-SEARCH * HTTP/1.1\r\n',
         'HOST: 239.255.255.250:1900\r\n',
         'MAN: "ssdp:discover"\r\n',
         'MX: 2\r\n',
         'ST: {0}\r\n'.format(search_target),
         '\r\n']
    )

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    try:
        sock.bind((local_ip, 10000))

        sock.sendto(ssdp_request.encode('utf-8'), ('239.255.255.250', 1900))
        if local_ip == "127.0.0.1":
            sock.settimeout(1)
        else:
            sock.settimeout(5)

            return sock.recv(2048)
    except socket.error:
        raise UpnpError("No reply from IGD using {} as IP".format(local_ip))
    finally:
        sock.close()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号