본문 바로가기

C#

C# Supersocket

  • 1.6버전과 2.0버전이 있다. 2.0버전은 아직 개발중이다. 1.6버전에서 Core는 사용할 수 없지만, 사용할 수 있게 포팅해놓은 프로젝트가 있다(Supersocket lite)
  • 오픈소스 치고는 자료가 잘 정리되어있는 것 같지만 의외로 예제가 많이 없다.
  • 멀티 쓰레드 방식은 많은 수의 클라이언트를 처리하기에는 적합하지 않다.
  • 고성능 처리를 위해서는 비동기 I/O를 사용해야한다.

 

supersocket 콘솔 예제 

서버, 클라이언트 프로젝트 모두 코어버전 콘솔 프로젝트를 생성한다.

nuget에서 supersocketlite를 받는다.

 

Server Program.cs

using SuperSocketServer;

var server = new MainServer();
server.InitConfig();
server.CreateServer();
var IsResult = server.Start();

if (IsResult)
{
    Console.WriteLine("서버 네트워크 시작");
}
else
{
    Console.WriteLine("[ERROR] 서버 네트워크 시작 실패");
    return;
}

while (Console.ReadKey().KeyChar != 'q')
{
    Console.WriteLine();
    continue;
}

server.Stop();

MainServer.cs, PacketData.cs, ReceiveFilter.cs는 이 프로젝트에서 가져온다.

 

Client Program.cs

using SuperSocketClient;

ClientSocket socket = new ClientSocket();

var address = "127.0.0.1";
int port = 11021;

if (socket.conn(address, port))
{
    Console.WriteLine($"{DateTime.Now}. 서버에 접속 성공");
}
else
{
    Console.WriteLine($"{DateTime.Now} 서버에 접속 실패");
}

while (Console.ReadKey().KeyChar != 'q')
{
    Console.WriteLine();
    continue;
}

 

다하고보니 supersocket lite 예제에 콘솔 예제가 있네...

우선 다 실행해봐야겠다. 

 

참고

SuperSocketLite/Tutorials at master · jacking75/SuperSocketLite (github.com)

 

'C#' 카테고리의 다른 글

Serilog 로그 설정  (0) 2024.05.19
[WorkerService] 윈도우 서비스 등록하기  (0) 2024.04.22
[WorkerService] Quartz 사용하기  (0) 2024.04.18
C# 기본 이론 정리  (0) 2023.01.11