我正在尝试创建一个类似 Chromecast 的设备,该设备可以从互联网流式传输视频并进行远程控制。我使用对设备的 HTTP 获取请求进行远程控制,并使用以下代码监听它们:
侦听对设备 (localhost) 的 HTTP 请求:
import socket
import sys
s = socket.socket()
host = "localhost"
port = 8060
s.bind(('', port))
s.listen(1)
try:
while True:
connection, clientAddress = s.accept()
try:
print clientAddress
//Do Command
//Reply
except:
print "Error"
except KeyboardInterrupt:
print('interrupt')
然后我开始实施 SSDP,以便其他设备可以找到我的设备并投射到它,并计划使用类似的代码来侦听 MSEARCH 请求,但 239.255.255.250:1900 除外。但是,当发送 MSEARCH 时,代码不会接收到它。
在“239.255.255.250:1900”上侦听 SSDP 搜索
import socket
import sys
s = socket.socket()
host = "239.255.255.250"
port = 1900
s.bind((host, port))
s.listen(10)
try:
while True:
connection, clientAddress = s.accept()
try:
print("Trigger")
print clientAddress
data = connection.recv(1048)
print data
except:
print "Error"
except KeyboardInterrupt:
print('interrupt')
问题:
所以问题是为什么两者的行为不同(我相信这是因为在第一个例子中,设备监听也是 HTTP 请求的目的地,而在第二个例子中它不是)以及修复代码的方法是什么所以我可以监听 SSDP 搜索。