修复多网络请求只根据本机内网ip所在网络搜索设备

This commit is contained in:
yqsphp
2026-01-12 13:18:55 +08:00
parent 5b03aaa8df
commit f8f0eb0935
4 changed files with 15 additions and 15 deletions

2
.gitignore vendored
View File

@@ -1 +1,3 @@
/.idea
/build
/.venv

View File

@@ -30,21 +30,18 @@ class DeviceDiscovery:
Returns:
list: 发现的设备列表
"""
# 首先检查网络连接
try:
test_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
test_sock.settimeout(1)
test_sock.sendto(b'test', ('239.255.255.250', 1900))
test_sock.recvfrom(1024)
test_sock.close()
except socket.timeout:
self.logger.warning("网络可能没有响应,检查防火墙设置")
except Exception as e:
self.logger.warning(f"网络测试异常: {e}")
devices_by_uuid = {} # 用UUID去重
pending_devices = {} # 待处理的设备key为locationvalue为(ip, headers)
# 获取本机IP
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
local_ip = s.getsockname()[0]
s.close()
except:
local_ip = "获取失败"
# SSDP 发现消息
ssdp_msg = (
"M-SEARCH * HTTP/1.1\r\n"
@@ -60,7 +57,8 @@ class DeviceDiscovery:
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, 2)
sock.bind(('0.0.0.0', 0))
# 绑定本机ip
sock.bind((local_ip, 0))
# 发送发现请求
sock.sendto(ssdp_msg.encode(), ('239.255.255.250', 1900))

View File

@@ -441,7 +441,7 @@ class StreamingFileServer:
self.httpd: Optional[StreamingHTTPServer] = None
self.server_thread: Optional[threading.Thread] = None
self.is_running = False
self.logger = AppLogger.create_default_logger('StreamingFileServer')
self.logger = AppLogger('StreamingFileServer')
# 初始化MIME类型
mimetypes.init()

View File

@@ -808,7 +808,7 @@ class MainWindow(QMainWindow):
# # 自动滚动到底部
# scrollbar = self.log_text.verticalScrollBar()
# scrollbar.setValue(scrollbar.maximum())
self.logger.info(message)
# 同时输出到状态栏
if level == "error":
self.statusBar().showMessage(f"错误: {message}", 1000)