Files
a301_mmo_game_server/ClientTester/EchoClientTester/Program.cs
tolelom cf2be6b125 fix : 코드 분석 후 버그 및 결함 16건 수정
- ARepository 전체 메서드 IDbConnection using 추가 (커넥션 풀 누수)
- GameServer NotImplementedException → 로그 출력으로 변경
- ServerBase Auth/Echo payload 길이 검증 주석 해제
- PacketSerializer MemoryStream using 추가 (양쪽 솔루션)
- PacketSerializer size 파라미터 제거, 자동 계산 + size 검증 구현
- ServerBase NetDataWriter cachedWriter 재사용 (GC 압력 감소)
- ServerBase isListening volatile 추가
- ServerBase Deserialize 실패 시 null payload 체크
- ServerBase Serilog 구조적 로깅 템플릿 구문 수정
- TestHandler 전체 메서드 try-catch 추가
- TestRepository IDbConnectionFactory 인터페이스로 변경
- DummyClients BodyLength 계산 불일치 수정
- DummyClients pendingPings 메모리 누수 방지
- EchoClientTester async void 이벤트 → 동기 Cancel()로 변경
- ANALYSIS.md 코드 분석 및 문제점 보고서 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 01:09:27 +09:00

46 lines
1.4 KiB
C#

using ClientTester.EchoDummyService;
using Serilog;
class EcoClientTester
{
public static readonly string SERVER_IP = "tolelom.xyz";
public static readonly int SERVER_PORT = 9500;
public static readonly string CONNECTION_KEY = "test";
public static readonly int CLIENT_COUNT = 100;
private static async Task Main(string[] args)
{
// .MinimumLevel.Warning() // Warning 이상만 출력 배포시
string timestamp = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.Console()
.WriteTo.File($"logs/log_{timestamp}.txt")
.CreateLogger();
CancellationTokenSource cts = new CancellationTokenSource();
Console.CancelKeyPress += (_, e) =>
{
e.Cancel = true;
Log.Warning("[SHUTDOWN] Ctrl+C 감지, 종료 중...");
cts.Cancel();
};
DummyClientService service = new DummyClientService(CLIENT_COUNT, SERVER_IP, SERVER_PORT, CONNECTION_KEY, 100);
service.OnAllDisconnected += () =>
{
Log.Warning("[SHUTDOWN] 종료 이벤트 발생, 종료 중...");
cts.Cancel();
};
await service.RunAsync(cts.Token);
service.PrintStats();
service.Stop();
await Log.CloseAndFlushAsync();
}
}