C# .Net Core의 쉽고 빠른 소켓
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
읽어주셔서 감사합니다. 이 라이브러리가 도움이 되었으면 합니다!!! :)
Reference
이 문제에 관하여(C# .Net Core의 쉽고 빠른 소켓), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kerlantc/easy-and-fast-sockets-in-c-net-core-clp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)