mirror of
https://github.com/fatedier/frp.git
synced 2026-05-15 16:15:49 -06:00
[GH-ISSUE #3587] [Feature Request] 希望有方法检测客户端的真实状态 #2862
Labels
No labels
In Progress
WIP
WaitingForInfo
bug
doc
duplicate
easy
enhancement
future
help wanted
invalid
lifecycle/stale
need-issue-template
need-usage-help
no plan
proposal
pull-request
question
todo
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/frp#2862
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Sharuru on GitHub (Aug 25, 2023).
Original GitHub issue: https://github.com/fatedier/frp/issues/3587
Describe the feature request
你好!
我使用 STCP 的方式进行远程桌面的访问。
配置方式如下:
用户(frpc) <----> 中转服务器 1(frps) <----> 中转服务器 2(frpc)<----> 目标工作站
用户通过配置文件中的 Service Name 来决定自己需要访问的具体工作站。
工作站的连接信息配置于中转服务器 2 中,通过不同的 Local IP 来控制。
示例配置:
用户端 frpc.ini
中转服务器 2 frpc.ini
在两者都在线的情况下,用户使用 mstsc 连接配置文件中设定的 Bind 绑定信息(127.0.0.1:33889)就可以访问到具体的工作站。
现在因为本地有一个自动化需求,当远程工作站在线时,通过第三方工具进行自动操作。
在设想的状态下,在 frpc 启动并连接的情况下,只要不停的检测本地的 Bind 地址是否可以访问即可,
如果可以访问,就启动 mstsc 并执行操作。
我用的检测方式是 PowerShell 的 Test-NetConnection,具体命令为:
TNC -ComputerName 127.0.0.1 -Port 33889。但发现实际情况为:无论远程的工作站是否在线,只要 frpc 启动并成功连接 frps 的情况下,网络检测结果永远为在线。
预想的结果是只有当远程工作站在线的情况下才为 True,否则为 False。
不知道这是否是 frp 的设计特性导致?
不知道是否有什么可靠的方法、设定可以检测到实际客户端的在线状态?
谢谢!
Describe alternatives you've considered
No response
Affected area
@fatedier commented on GitHub (Aug 28, 2023):
目前只在有新的连接来的时候,才会去尝试和 stcp server 建立连接,如果 stcp server 不可用,连接会被立即断开。
这种方式的成本最低,不需要维护 stcp visitor 和 stcp server 的状态。
你可以尝试检测连接建立后没有立即断开,来作为判断依据。
@Sharuru commented on GitHub (Aug 28, 2023):
明白了,感谢提供思路。
查了下微软相关的文档,mstsc 没有太多事件可以监听,最后改换了实现方式,用 RPA 来判断远程桌面是否联通来 workaround 了。