From 3284cce631b4706949e0bb89d012c1df271e5d03 Mon Sep 17 00:00:00 2001 From: jasonchenwork Date: Tue, 1 Apr 2025 16:39:41 +0800 Subject: [PATCH] =?UTF-8?q?QR=5FCODE(port=20=E8=AA=BF=E6=95=B4)=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=93=A1=E6=AC=8A=E9=99=90=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HttpServer.cs | 26 ++++++++++++++++++++------ app.manifest | 10 ++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 app.manifest diff --git a/HttpServer.cs b/HttpServer.cs index 0a112eb..5c30254 100644 --- a/HttpServer.cs +++ b/HttpServer.cs @@ -54,15 +54,23 @@ namespace DualScreenDemo externalAddress = File.ReadAllText(serverAddressFilePath).Trim(); Console.WriteLine("External address: " + externalAddress); } - - // 启动服务器的逻辑 + else + { + Console.WriteLine("Warning: External address file not found. Using local address only."); + } + // 創建一個 HttpListener 來監聽 HTTP 請求 HttpListener listener = new HttpListener(); - - // 添加本地地址前缀 + + // 構造本地地址的 URL 前綴(包含協議、地址和端口) string localPrefix = String.Format("http://{0}:{1}/", localAddress, port); + + // 在控制台輸出添加的本地前綴,方便調試 Console.WriteLine("Adding local prefix: " + localPrefix); + + // 將本地前綴添加到 HttpListener,使其監聽該 URL listener.Prefixes.Add(localPrefix); + // 如果有外网地址,也添加外网地址前缀 if (!string.IsNullOrEmpty(externalAddress)) { @@ -70,7 +78,9 @@ namespace DualScreenDemo // 外網 IP 和 port 調整 string[] parts = externalAddress.Split(':'); string host = parts[0]; - int externalPort = parts.Length > 1 ? int.Parse(parts[1]) : port; + string hostName = System.Net.Dns.GetHostName(); + string externalPort = '1' + hostName.Substring(Math.Max(2, hostName.Length - 20)); + //int externalPort = parts.Length > 1 ? int.Parse(parts[1]) : port; string externalPrefix = String.Format("http://{0}:{1}/", host, externalPort); Console.WriteLine("Adding external prefix: " + externalPrefix); @@ -87,12 +97,16 @@ namespace DualScreenDemo // 生成两个二维码内容 string localQrContent = String.Format("http://{0}:{1}/{2}/windows.html", localAddress, port, randomFolderName); + // string localQrContent = String.Format("http://{0}:{1}/{2}/windows.html", "ss.net.dnsnet.cc", 1102, randomFolderName); // 修改外网二维码内容生成 + string externalQrContent = !string.IsNullOrEmpty(externalAddress) ? String.Format("http://{0}/{1}/windows.html", externalAddress, randomFolderName) : localQrContent; - + + + Console.WriteLine("external QR Content : " + externalQrContent); // 生成二维码(这里使用外网地址的二维码,因为通常外网地址更有用) string qrImagePath = GenerateQRCode(externalQrContent, Path.Combine(baseDirectory, randomFolderName, "qrcode.png")); diff --git a/app.manifest b/app.manifest new file mode 100644 index 0000000..1827761 --- /dev/null +++ b/app.manifest @@ -0,0 +1,10 @@ + + + + + + + + + +