Posts
Rito15
Cancel

C# 패킷을 byte[]로 직렬화하는 다양한 방법

Note 비교적 단순한 형태의 패킷들을 정의한다. 패킷을 다양한 방법으로 직렬화하여 byte[] 타입 버퍼에 순서대로 넣으며, 성능을 검사한다. 직렬화된 결과의 크기는 패킷 내 모든 필드의 크기의 합이어야 한다. 문자열 패킷은 어차피 공통적으로 인코딩을 거쳐야 하므로, 제외한다. ...

C# - Benchmark DotNet

설치 비주얼 스튜디오 - 프로젝트 - NuGet 패키지 관리 - Benchmark를 검색하여 설치 사용법 [1] 테스트 대상 클래스 … [1-1] 네임스페이스 1 <summary> . </summary> 1 <div class="langu...

Screen Drag Selection(화면에 마우스 드래그 영역 표시하기)

Preview Source Code using System.Collections; using System.Collections.Generic; using UnityEngine; using System; // 날짜 : 2021-08-07 AM 1:12:20 // 작성자 : Rito /// <summary> 화면에 ...

C# 구조체 프로퍼티, 구조체 인덱서

구조체의 특징 초기화(할당), 리턴 등의 동작을 통해 값을 전달할 경우, 구조체가 통째로 복제된다. struct MyStruct { public float value; } class MainClass { private MyStruct ms; private MyStruct GetStruct() ...

유니티 - 오브젝트 풀링(Object Pooling)

1. 목표 오브젝트 풀링 기법 이해하기 Key 기반 다중 풀링 기법 이해하기 오브젝트 풀 매니저 클래스 구현하기 2. 개념 게임오브젝트를 생성, 파괴하는 것은 순간적으로 큰 성능 소모 및 프레임 저하를 발생시킬 수 있다. 따라서 생성, 파괴 대신 활성화, 비활성화 방식을 사용하면 ...

유니티 - Async Web Request

Note UnityWebRequest는 AsyncOperation 클래스를 상속받는다. 그러니까 코루틴에서 yield return으로 기다릴 수 있다. 웹페이지를 받아올 경우, 페이지 소스의 <head> 부분에서 인코딩을 꼭 확인해야 한다. Source Code ...

TCP 비동기 소켓으로 간단한 콘솔 채팅 구현하기

이전 포스팅에서 이어집니다. 1. 채팅을 위한 패킷 설계 [1] ChattingCommand 열거형 전달하는 패킷의 명령어를 미리 열거형으로 정의한다. 명령어의 종류는 크게 공통, 클라이언트의 요청, 서버의 통지 3가지로 나뉜다. ChattingCommand.cs /// ...

TCP 비동기 소켓 서버, 클라이언트 - 패킷 고려하기

이전 포스팅에서 이어집니다. ReceiveBuffer, SendBuffer 소켓 통신을 통한 데이터 전달 시 단순히 byte[]를 주고 받는 것에서 그치지 않고, 정말로 ‘패킷’을 주고 받기 위해 필요하다. ReceiveBuffer 클래스 각 세션마다 하나의 ReceiveBuffer 객체를 갖는다. ...

TCP 비동기 소켓 서버, 클라이언트 기본

비동기 소켓 통신 방식 Socket 객체에는 ~Async() 형태로 명명된 비동기 메소드들이 존재한다. AcceptAsync(SocketAsyncEventArgs) ConnectAsync(SocketAsyncEventArgs) DisconnectAsync(SocketAsyncEventArgs) ConnectAsync(SocketA...

UDP 소켓 서버, 클라이언트 기본

UDP 소켓 통신의 특징 서버와 클라이언트 간의 1:1 연결이 생성되지 않는다. 리스너 소켓이 필요하지 않다. Listen(), Connect() 과정이 없다. 소켓의 .ReceiveFrom(), .SendTo() 메소드를 통해 엔드포인트와 데이터를 주고 받는다. 소켓 통신 과정 서버 서버 IP 주소, 포트를 통해 ...