MainServer 클래스

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Runtime.CompilerServices;

using SuperSocket.SocketBase;
using SuperSocket.SocketBase.Protocol;
using SuperSocket.SocketEngine;

using CSBaseLib;

//TODO 1. 주기적으로 접속한 세션이 패킷을 주고 받았는지 조사(좀비 클라이언트 검사)

namespace ChatServer
{
    public class MainServer : AppServer<ClientSession, EFBinaryRequestInfo>
    {
        public static ChatServerOption ServerOption;
        public static SuperSocket.SocketBase.Logging.ILog MainLogger;

        SuperSocket.SocketBase.Config.IServerConfig m_Config;

        PacketProcessor MainPacketProcessor = new PacketProcessor();
        RoomManager RoomMgr = new RoomManager();

생성자

public MainServer()
    : base(new DefaultReceiveFilterFactory<ReceiveFilter, EFBinaryRequestInfo>())
{
    NewSessionConnected += new SessionHandler<ClientSession>(OnConnected);
    SessionClosed += new SessionHandler<ClientSession, CloseReason>(OnClosed);
    NewRequestReceived += new RequestHandler<ClientSession, EFBinaryRequestInfo>(OnPacketReceived);
}

InitConfig

public void InitConfig(ChatServerOption option)
{
    ServerOption = option;

    m_Config = new SuperSocket.SocketBase.Config.ServerConfig
    {
        Name = option.Name,
        Ip = "Any",
        Port = option.Port,
        Mode = SocketMode.Tcp,
        MaxConnectionNumber = option.MaxConnectionNumber,
        MaxRequestLength = option.MaxRequestLength,
        ReceiveBufferSize = option.ReceiveBufferSize,
        SendBufferSize = option.SendBufferSize
    };
}

CreateStartServer

public void CreateStartServer()
{
		try
		{
				bool bResult = Setup(new SuperSocket.SocketBase.Config.RootConfig(), m_Config, logFactory: new NLogLogFactory());

				if (bResult == false)
				{
						Console.WriteLine("[ERROR] 서버 네트워크 설정 실패 ㅠㅠ");
						return;
				} 
				else 
				{
						MainLogger = base.Logger;
						MainLogger.Info("서버 초기화 성공");
				}

				// 룸 매니저로 방들 만들고, 패킷프로세서로 패킷 받고, 패킷 처리하는 동작 실행
				CreateComponent();

				Start();

				MainLogger.Info("서버 생성 성공");
		}
		catch (Exception ex)
		{
				Console.WriteLine($"[ERROR] 서버 생성 실패: {ex.ToString()}");
		}          
}

StopServer

public void StopServer()
{            
    Stop();

    MainPacketProcessor.Destory();
}