From 66d18cd0acc8c2906b1f6b8e989d7fc8e8633bae Mon Sep 17 00:00:00 2001 From: qornwh1 Date: Mon, 2 Mar 2026 17:47:03 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=EB=82=98=EC=A4=91=20=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=EC=A0=81=20=ED=86=B5=ED=95=A9=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=B4=20main=EC=AA=BD=20=EB=B9=84=EB=8F=99=EA=B8=B0=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MMOTestServer/MMOserver/Program.cs | 23 ++++++++++++------- MMOTestServer/ServerLib/Service/ServerBase.cs | 7 +++--- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/MMOTestServer/MMOserver/Program.cs b/MMOTestServer/MMOserver/Program.cs index c79dc6e..8590bd5 100644 --- a/MMOTestServer/MMOserver/Program.cs +++ b/MMOTestServer/MMOserver/Program.cs @@ -7,7 +7,7 @@ namespace MMOserver; class Program { - private static void Main() + private static async Task Main() { // .MinimumLevel.Warning() // Warning 이상만 출력 배포시 @@ -43,17 +43,24 @@ class Program }; // 게임 서버 스레드 생성 - Thread serverThread = new Thread(() => - { - gameServer.Init(); - gameServer.Run(); - }); + // Thread serverThread = new Thread(() => + // { + // gameServer.Init(); + // gameServer.Run(); + // }); // 게임 서버 스레드 시작 - serverThread.Start(); + // serverThread.Start(); // Run()이 끝날 때까지 대기 - serverThread.Join(); + // serverThread.Join(); + + // 비동기 변경 + await Task.Run(async () => + { + gameServer.Init(); + await gameServer.Run(); + }); // Log 종료 Log.CloseAndFlush(); diff --git a/MMOTestServer/ServerLib/Service/ServerBase.cs b/MMOTestServer/ServerLib/Service/ServerBase.cs index bedb4e6..41ed037 100644 --- a/MMOTestServer/ServerLib/Service/ServerBase.cs +++ b/MMOTestServer/ServerLib/Service/ServerBase.cs @@ -61,7 +61,7 @@ public abstract class ServerBase : INetEventListener isListening = true; } - public virtual void Run() + public async Task Run() { netManager.Start(Port); Log.Information("[Server] 시작 Port={Port}", Port); @@ -69,7 +69,7 @@ public abstract class ServerBase : INetEventListener while (isListening) { netManager.PollEvents(); - Thread.Sleep(15); + await Task.Delay(1); } netManager.Stop(); Log.Information("[Server] 종료 Port={Port}", Port); @@ -193,7 +193,8 @@ public abstract class ServerBase : INetEventListener short code = reader.GetShort(); short bodyLength = reader.GetShort(); Log.Debug("[Echo] : addr={Addr}, str={Str}", peer.Address, reader.GetString()); - SendTo(peer, payload); + // Echo메시지는 순서보장 안함 HOL Blocking 제거 + SendTo(peer, payload, DeliveryMethod.ReliableUnordered); } // ─── Auth 처리 (내부) ────────────────────────────────────────────────