반응형 전체 글552 네트워크프로그래밍 - 패킷 자동화 처리 객체지향 방법으로 수행하도록 하기 패킷 자동화 처리 알아보러 가기 네트워크프로그래밍 - 패킷 자동화 처리(TryWriteBytes,c#에서 포인터 사용하는 법)패킷작업하기 서버, 클라이언트에 이 정보가 다 있어야 한다. class Packet { public short size; public short packetId; } class PlayerInfoReq : Packet { public long playerId; } class PlayerInfoOk : Packet { public int hp; public int attacode-piggy.tistory.com객체지향 방법 사용하기패킷을 만든 다음에 해야되는 부분이 너무 많다. 그러므로 밀어 넣어주는 부분을 따로 빼서 객체지향 방법을 사용하는 것이 좋다. 1. Write01 기존 코.. 2023. 8. 7. C#- ToBytes(c#에서 포인터 사용해보기) C#에서 포인터를 사용하여 ulong타입의 값을 바이트 배열에 변환하여 저장하는 것으로 예시 ToBytes static unsafe void ToBytes(byte[] array, int offset, ulong value) 매개변수 array : 변환할 데이터를 저장하는 바이트 배열이다. offset : array 배열에서 데이터 저장할 시작 위치를 나타내는 오프셋이다. value : 바이트 배열로 변환할 ulong데이터이다. static unsafe void ToBytes(byte[] array, int offset, ulong value) { fixed (byte* ptr = &array[offset]) *(ulong*)ptr = value; } 01 ptr - araay[offset]을 가리키는 .. 2023. 8. 4. C# - TryWriteBytes TryWriteBytes 메모리에 새로운 배열을 할당하는 대신 이미 할당된 메모리 영역인 세그먼트 버퍼를 활용하여 데이터를 작성한다. 그러므로 Span를 사용하여 기존의 메모리를 참조한다. 이로인해 데이터를 복사하는 시간과 메모리 할당 비용이 줄어든다. public static bool TryWriteBytes (Span destination, int value); 매개변수 destination : 쓰고자 하는 바이트 데이터의 목적지를 나타내는 Span value : Span에 쓰여질 int 값 반환 쓰기 작업의 성공 여부 true인 경우 destination의 크기가 작아서 int값을 쓰는데 충분한 공간이 있는 경우 int value = 12345; Span destination = new byte[4.. 2023. 8. 3. 네트워크프로그래밍 - 직렬화(Serialization), 역직렬화(Deserialization), Session, 패킷 작업 정의 직렬화 객체를 메모리 상태에서 파일이나 네트워크 상등에서 저장하거나 전송하기 위해 일련의 바이트로 변화하는 과정이다. 역직렬화 바이트 배열을 다시 객체로 변환하는 과정이다. 이를 통해 객체의 상탤르 보존하고 이를 파일이나 네트워크를 통해 다른 시스템과 공유하거나 저장할 수 있다. 네트워크 통신에서 직렬화는 데이터를 네트워크로 보내기 위해서 데이터를 일련의 바이트로 변환하여 패킷(Packet)으로 만들어서 전송해야 한다. 서버와 클라이언트 사이에서 주고 받는 데이터도 직렬화를 통해 패킷으로 변화되어 전송된다. 패킷 패킷은 통신할 데이터의 구조를 담고 있으며, 프로토콜에 맞게 직렬화되어 전송된다. 이를 위해 일반적으로 사용되는 데이터 형식은 바이트 배열, 리스트(List), 문자열(String)등이 있다. .. 2023. 8. 3. 네트워크프로그래밍 - 패킷 자동화 처리(TryWriteBytes,c#에서 포인터 사용하는 법) 패킷작업하기서버, 클라이언트에 이 정보가 다 있어야 한다.class Packet{ public short size; public short packetId;}class PlayerInfoReq : Packet{ public long playerId;}class PlayerInfoOk : Packet{ public int hp; public int attack;}public enum PacketID{ PlayerInfoReq = 1, PlayerInfoOk = 2,}보내는거 설정01 플레이어 정보 요청을 나타내는 패킷, PlayerInfoReq클래스의 인스턴스 생성PlayerInfoReq는 클라이언트로부터 플레이어 정보를 요청하는 클래스이다.PlayerInfoReq p.. 2023. 8. 2. Unity - NavMeshAgent를 사용해서 게임오브젝트를 랜덤으로 움직여보기 1. 돌아다닐 영역 설정 01 Window - Navigation 클릭 02 Object - Navigation Static 클릭 03 Bake탭에 들어가서 Bake누르면 영역 설정 완료 04 움직일 GameObject에 NavMeshAgent 추가 Base Offset, Height등 조절하기 2. 랜덤으로 돌아다니기 01 현재 게임 오브젝트에 부탁된 NavMeshAgent 컴포넌트를 찾아 agent변수에 할당 NavMeshAgent agent; private void Start() { agent = GetComponent(); } 02 동물이 목적지에 도착하거나 경로를 탐색중이지 않을때만 돌아다니게 하기 if (!agent.pathPending && agent.remainingDistance < 0... 2023. 8. 2. 이전 1 ··· 53 54 55 56 57 58 59 ··· 92 다음 반응형