C# .Net Core의 쉽고 빠른 소켓

4791 단어 csharpbeginnersdotnet

C#을 사용하여 소켓을 사용하여 작업하는 것은 다양한 라이브러리와 선택할 수 있는 방법이 많기 때문에 실제로 압도적일 수 있습니다.
예를 들어, TcpClient, NetworkStream, TcpListener 클래스는 실제로 유사한 메서드를 사용하지만 용도가 다르고 각 클래스 내에서 동일한 목표를 달성하는 다양한 방법이 있습니다.
따라서 소켓으로 작업해야 할 때마다 인터넷과 공식 문서를 검색하게 되지만 찾은 많은 솔루션 중 어떤 솔루션이 더 정확하고 완전히 비동기식이며 생산 준비가 되어 있거나 더 업데이트된 옵션인지 알 수 없습니다.

문제에 대한 해결책: SockNet



Socknet은 .Net Core의 최신 버전과 함께 작동하는 C# 라이브러리(.Net Standard 2.0)로, 몇 줄의 코드만으로 소켓 서버 또는 클라이언트를 만들 수 있습니다.
서로 연결된 클라이언트와 서버를 생성하는 간단한 예제를 통해 어떻게 작동하는지 살펴보겠습니다.

고객:
그러면 비동기적으로 연결할 서버 주소를 나타내는 소켓 클라이언트가 생성되고 연결되면 비동기적으로 데이터를 보내고 받습니다.

  var client = new SocketClient("127.0.0.1", 80);

  if (await client.Connect())
  {
      await client.Send("Am I cool?");
      var recData = await client.ReceiveBytes();
  }

그리고...그게 전부 고객을 위한 것입니다!

섬기는 사람:
첫 번째 단계는 구체적인 포트에서 수신하도록 서버를 초기화하고 서버가 클라이언트에서 읽는 방식을 설정하는 것입니다. 이 경우 'SetReaderBufferBytes(1024)' 메서드를 사용하면 각 연결에서 1024바이트를 읽지만 더 고급 유형의 읽기를 설정할 수 있습니다.

  var server = new SocketServer();
  server.InitializeSocketServer("127.0.0.1", 80);
  server.SetReaderBufferBytes(1024);
  server.StartListening();

시작 및 종료 구분자를 사용하여 읽기 또는 정확한 바이트 수를 수신하는 것과 같은 다른 유형의 읽기는 documentation에서 찾을 수 있습니다.
초기화가 되었으니 이제 서버를 실행해 봅시다!

  if(server.IsNewData())
  {
      var data = server.GetData();
      // Do whatever you want with data
      Task.Run(() => DoSomething(data, server));
  }

여기서 소켓은 새 데이터가 도착할 때까지 수신 대기하며, 데이터가 도착하면 여러 사용자의 수신을 계속 수신하기 위해 별도의 스레드에서 처리되도록 데이터를 보낼 수 있습니다.
이제 데이터를 클라이언트로 다시 보내려면 다음 방법을 사용하십시오.

server.ResponseToClient(data.key, "this is cool!");

그리고 그게 다야! 완전한 기능을 갖춘 강력한 소켓 클라이언트 및 서버가 단 몇 분과 몇 줄의 코드로 완료되었습니다.

이 예제here의 소스 코드를 볼 수 있습니다.

라이브러리를 다운로드하려면 해당 nuget 패키지를 받으십시오.$ dotnet add package SockNet
읽어주셔서 감사합니다. 이 라이브러리가 도움이 되었으면 합니다!!! :)

좋은 웹페이지 즐겨찾기