From f393b372ec55b89b623189145f726200b46a3a3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AD=B1=E5=82=91?= Date: Fri, 26 Aug 2022 20:50:00 +0800 Subject: [PATCH] Update auto find local server address --- Source/GrasscutterTools/Forms/FormMain.cs | 48 ++++++++++++++++++++--- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/Source/GrasscutterTools/Forms/FormMain.cs b/Source/GrasscutterTools/Forms/FormMain.cs index 9b55e39..2e3a821 100644 --- a/Source/GrasscutterTools/Forms/FormMain.cs +++ b/Source/GrasscutterTools/Forms/FormMain.cs @@ -1387,6 +1387,36 @@ namespace GrasscutterTools.Forms BeginInvoke(new Action(() => ShowTip(Resources.TokenRestoredFromCache, BtnInvokeOpenCommand))); }); } + else + { + // 自动尝试查询本地服务端地址,降低门槛 + Task.Run(async () => + { + await Task.Delay(5000); + var localhosts = new string[] { + "http://127.0.0.1:443", + "https://127.0.0.1", + "http://127.0.0.1", + "https://127.0.0.1:80", + "http://127.0.0.1:8080", + "https://127.0.0.1:8080", + }; + foreach (var host in localhosts) + { + try + { + await UpdateServerStatus(host); + // 自动填写本地服务端地址 + TxtHost.Text = host; + break; + } + catch (Exception) + { + // Ignore + } + } + }); + } } private void SaveOpenCommand() @@ -1396,6 +1426,16 @@ namespace GrasscutterTools.Forms Settings.Default.TokenCache = OC?.Token; } + private async Task UpdateServerStatus(string host) + { + var status = await DispatchServerAPI.QueryServerStatus(host); + LblServerVersion.Text = status.Version; + if (status.MaxPlayer >= 0) + LblPlayerCount.Text = $"{status.PlayerCount}/{status.MaxPlayer}"; + else + LblPlayerCount.Text = status.PlayerCount.ToString(); + } + private async void BtnQueryServerStatus_Click(object sender, EventArgs e) { var btn = sender as Button; @@ -1405,16 +1445,12 @@ namespace GrasscutterTools.Forms { try { - var status = await DispatchServerAPI.QueryServerStatus(TxtHost.Text); - LblServerVersion.Text = status.Version; - if (status.MaxPlayer >= 0) - LblPlayerCount.Text = $"{status.PlayerCount}/{status.MaxPlayer}"; - else - LblPlayerCount.Text = status.PlayerCount.ToString(); + await UpdateServerStatus(TxtHost.Text); } catch (Exception ex) { MessageBox.Show(Resources.QueryServerStatusFailed + ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); + return; } OC = new OpenCommandAPI(TxtHost.Text);