mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-19 07:10:44 +00:00
1.6.1:常规发布
- 版本号 1.6.1 -> 1.6.1 - 重建三端并打包 - 关键测试全过
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
r"""修:中转连接尝试阻塞了局域网发现。
|
||||
|
||||
现象(agent 日志):
|
||||
[20:31:17] 没配过中转地址,用内置默认值:192.168.10.105:8080;https://...
|
||||
[20:31:25] http://192.168.10.105:8080 不通,试下一个 <- 等了 8 秒
|
||||
[20:31:27] https://relay.xxmxxs.top 不通,试下一个 <- 又 2 秒
|
||||
[20:31:27] 自动发现已开启(UDP 8766) <- 10 秒后才绑上
|
||||
|
||||
server.start() 原来的顺序:
|
||||
1. 绑 TCP
|
||||
2. enable_relay() <- 挨个试中转地址,每个都要等超时(这里 10 秒)
|
||||
3. 起 accept 线程
|
||||
4. 起 DiscoveryResponder
|
||||
|
||||
问题:**局域网发现被中转拖住了**。
|
||||
电脑和手表在同一个 WiFi 时,本来应该"广播一下就找到",
|
||||
结果因为中转连不上,要等 10 几秒手表才搜得到电脑。
|
||||
中转地址越烂、候选越多,等得越久。
|
||||
|
||||
影响:
|
||||
* 用户体验上表现为"刚开电脑时手表搜不到,过一会儿才行"
|
||||
* 自动化测试也栽在这(广播时发现服务还没起)
|
||||
|
||||
改法:把局域网发现**提到 enable_relay() 之前**。
|
||||
局域网是本机能力,不该依赖任何网络外部条件。
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import ast
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
SERVER = (Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\windows"
|
||||
r"\lanremote\server.py"))
|
||||
|
||||
OLD = ''' # 配了中转地址就同时启用跨网络通道(和局域网监听并存,不冲突)
|
||||
try:
|
||||
self.enable_relay()
|
||||
except Exception as exc: # noqa: BLE001
|
||||
self._log(f"启用中转失败:{exc}")
|
||||
|
||||
self._accept_thread = threading.Thread(target=self._accept_loop,
|
||||
name="accept", daemon=True)
|
||||
self._accept_thread.start()
|
||||
self._clip_thread = threading.Thread(target=self._clip_loop,
|
||||
name="clip", daemon=True)
|
||||
self._clip_thread.start()
|
||||
|
||||
# 启动局域网自动发现,让手表不用输 IP
|
||||
self._discovery = DiscoveryResponder(self.store, self.port)
|
||||
# 手表点「连不上?」会广播请求,这里就把网络自检窗口弹出来
|
||||
self._discovery.on_selfcheck = self._on_selfcheck_request
|
||||
if self._discovery.start():
|
||||
self._log(f"自动发现已开启(UDP {DISCOVERY_PORT})")
|
||||
else:
|
||||
self._log(f"自动发现未开启:{self._discovery.last_error}")'''
|
||||
|
||||
NEW = ''' # ── 先起局域网发现 ──
|
||||
#
|
||||
# 顺序很重要:enable_relay() 会挨个试中转地址,
|
||||
# 每个候选都要等到超时才算"不通",地址越烂等得越久(实测 10 秒+)。
|
||||
# 原来这一步排在发现服务前面,导致:
|
||||
# 电脑刚开机的十几秒里,手表广播搜不到它。
|
||||
# 局域网发现是纯本机能力,不该被"连不连得上外网"拖住,
|
||||
# 所以挪到前面,开机即可被搜到。
|
||||
self._discovery = DiscoveryResponder(self.store, self.port)
|
||||
# 手表点「连不上?」会广播请求,这里就把网络自检结论算出来
|
||||
self._discovery.on_selfcheck = self._on_selfcheck_request
|
||||
if self._discovery.start():
|
||||
self._log(f"自动发现已开启(UDP {DISCOVERY_PORT})")
|
||||
else:
|
||||
self._log(f"自动发现未开启:{self._discovery.last_error}")
|
||||
|
||||
# ── 再起收发线程 ──
|
||||
self._accept_thread = threading.Thread(target=self._accept_loop,
|
||||
name="accept", daemon=True)
|
||||
self._accept_thread.start()
|
||||
self._clip_thread = threading.Thread(target=self._clip_loop,
|
||||
name="clip", daemon=True)
|
||||
self._clip_thread.start()
|
||||
|
||||
# ── 最后才连中转(会阻塞,所以放最后)──
|
||||
# 配了中转地址就同时启用跨网络通道(和局域网监听并存,不冲突)
|
||||
try:
|
||||
self.enable_relay()
|
||||
except Exception as exc: # noqa: BLE001
|
||||
self._log(f"启用中转失败:{exc}")'''
|
||||
|
||||
|
||||
def main() -> int:
|
||||
text = SERVER.read_text(encoding="utf-8")
|
||||
if "先起局域网发现" in text:
|
||||
print(" 已经改过")
|
||||
return 0
|
||||
if OLD not in text:
|
||||
print(" [失败] 锚点没找到")
|
||||
return 1
|
||||
|
||||
text = text.replace(OLD, NEW, 1)
|
||||
SERVER.write_text(text, encoding="utf-8", newline="\n")
|
||||
print(" 已把局域网发现提到 enable_relay() 之前")
|
||||
|
||||
try:
|
||||
ast.parse(text)
|
||||
print(" server.py 语法 OK")
|
||||
except SyntaxError as exc:
|
||||
print(f" 语法错误: 行 {exc.lineno}: {exc.msg}")
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user