From 3c648ebc27cfcc08c005e4c5bc591a7437c50939 Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Mon, 13 Jul 2020 17:25:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4NTT=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Netch/Controllers/MainController.cs | 8 +++++++- Netch/Controllers/NTTController.cs | 13 +++++-------- Netch/Forms/MainForm.Status.cs | 30 +++++++++++++---------------- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/Netch/Controllers/MainController.cs b/Netch/Controllers/MainController.cs index 2216f09d..8ba6d9b5 100644 --- a/Netch/Controllers/MainController.cs +++ b/Netch/Controllers/MainController.cs @@ -94,7 +94,13 @@ namespace Netch.Controllers case 1: case 2: if (result) - Task.Run(() => pNTTController.Start()); + Task.Run(() => + { + MainForm.Instance.NatTypeStatusText(i18N.Translate("Starting NatTester")); + // Thread.Sleep(1000); + var (nttResult, natType, _, _) = pNTTController.Start(); + if (nttResult) MainForm.Instance.NatTypeStatusText(natType); + }); break; } } diff --git a/Netch/Controllers/NTTController.cs b/Netch/Controllers/NTTController.cs index 80b9c442..661938bf 100644 --- a/Netch/Controllers/NTTController.cs +++ b/Netch/Controllers/NTTController.cs @@ -1,8 +1,5 @@ using System; using System.Diagnostics; -using System.IO; -using System.Threading; -using Netch.Forms; using Netch.Models; using Netch.Utils; @@ -10,6 +7,8 @@ namespace Netch.Controllers { public class NTTController : Controller { + private string _lastResult; + public NTTController() { MainFile = "NTT"; @@ -23,8 +22,6 @@ namespace Netch.Controllers public (bool, string, string, string) Start() { if (!Ready) return (false, null, null, null); - Thread.Sleep(1000); - MainForm.Instance.NatTypeStatusText(i18N.Translate("Starting NatTester")); try { Instance = GetProcess("bin\\NTT.exe"); @@ -40,11 +37,10 @@ namespace Netch.Controllers Instance.BeginErrorReadLine(); Instance.WaitForExit(); - var result = File.ReadAllText($"logging\\{MainFile}.log").Split('#'); + var result = _lastResult.Split('#'); var natType = result[0]; var localEnd = result[1]; var publicEnd = result[2]; - MainForm.Instance.NatTypeStatusText(natType); return (true, natType, localEnd, publicEnd); } @@ -58,7 +54,8 @@ namespace Netch.Controllers private void OnOutputDataReceived(object sender, DataReceivedEventArgs e) { - WriteLog(e); + if (!string.IsNullOrEmpty(e.Data)) + _lastResult = e.Data; } /// diff --git a/Netch/Forms/MainForm.Status.cs b/Netch/Forms/MainForm.Status.cs index 556e3542..8081b288 100644 --- a/Netch/Forms/MainForm.Status.cs +++ b/Netch/Forms/MainForm.Status.cs @@ -1,8 +1,7 @@ using System; -using System.Windows.Media; +using System.Drawing; using Netch.Models; using Netch.Utils; -using Color = System.Drawing.Color; namespace Netch.Forms { @@ -22,28 +21,24 @@ namespace Netch.Forms if (State != State.Started) { NatTypeStatusLabel.Text = ""; - NatTypeStatusLabel.Visible = false; - NatTypeStatusLightLabel.Visible = false; + NatTypeStatusLabel.Visible = NatTypeStatusLightLabel.Visible = false; return; } + if (!string.IsNullOrEmpty(text)) { NatTypeStatusLabel.Text = "NAT" + i18N.Translate(": ") + text.Trim(); + if (Enum.TryParse(text, false, out STUN_Client.NatType natType)) + { + NatTypeStatusLightLabel.Visible = true; + UpdateNatTypeLight(natType); + } } else { NatTypeStatusLabel.Text = "NAT" + i18N.Translate(": ") + i18N.Translate("Test failed"); } - if (Enum.TryParse(text,false,out STUN_Client.NatType natType)) - { - UpdateNatTypeLight(natType); - NatTypeStatusLightLabel.Visible = true; - } - else - { - NatTypeStatusLightLabel.Visible = false; - } NatTypeStatusLabel.Visible = true; } @@ -66,12 +61,13 @@ namespace Netch.Forms c = Color.LimeGreen; break; default: - c=Color.Red; + c = Color.Red; break; } - NatTypeStatusLightLabel.ForeColor=c; + + NatTypeStatusLightLabel.ForeColor = c; } - + public void StatusText(string text) { @@ -79,7 +75,7 @@ namespace Netch.Forms } /// - /// Update UI, Status, Status Label + /// Update UI, Status, Status Label /// /// public void UpdateStatus(State state)