본문 바로가기
반응형

분류 전체보기505

네트워크프로그래밍 - RecvBuffer 개선하기 원래 코드 SocketAsyncEventArgs _recvArgs = new SocketAsyncEventArgs(); public void Start(Socket socket) { _recvArgs.SetBuffer(new byte[1024],0,1024); RegisterRecv(); } setBuffer를 한 다음 어떤 변화도 주지 않았다. 그러므로 _socket.ReceiveAsync(_recvArgs)에서 우리가 건네주는 버퍼는 위의 Setbuffer이다. void RegisterRecv() { bool pending = _socket.ReceiveAsync(_recvArgs); } TCP 우리가 저번에 TCP에대해 알아보았는데 클라이언트 쪽에서 100바이트를 보낸다고 가정한다면 무조건 100바.. 2023. 7. 19.
C# - ArraySegment<T> Struct ArraySegment Struct 새로운 배열을 생성하거나 데이터를 복사하지 않고도 원본 배열의 특정 부분에 접근할 수 있다. 그렇기 때문에 원본 배열을 부분만 조작하거나 사용할 수 있다. 01 구성 struct ArraySegment { T[] array; // 원본 배열 int offset; // 배열의 시작 위치 int count; // 배열에서 사용될 요소의 개수 } 02 사용 예시 byte[] originalArray = new byte[1000]; ArraySegment arraySegment = new ArraySegment(originalArray, 100, 200); byte[] subArray = arraySegment.Array; // 원본 배열의 참조를 얻을 수 있다 int off.. 2023. 7. 19.
네트워크프로그래밍 - TCP vs UDP TCP와 UDP는 트랜스포트 계층에 위치한 프로토콜이다. TCP vs UDP 바운더리란? 데이터의 분할 단위 또는 분할 데이터 조각들 간의 구분을 나타낸다. 패킷이란? 네트워크 통신에서 데이터를 전송하는 단위이다. 데이터를 전송할 때 큰 데이터를 패킷으로 만들고 이를 네트워크를 통해 전송한다. 각 패킷은 헤더와 페이로드로 구성되어 있다. 헤더 : 패킷에 대한 추가적인 메타데이터 페이로드 : 패킷의 실제 데이터 예시 piggy를 패킷으로 분할하여 전송하는 경우 게임에 적용한 예시 플레이어의 이동 부분은 신속하고 실시간적인 반응이 필요하므로 UDP를 사용하는 것이 좋다. 게임 결과, 아이템 획득과 같은 한번 체크가 필요한 부분은 TCP를 사용하는 것이 좋다. 참고 : 본 내용은 MMORPG PART4 강의를.. 2023. 7. 19.
Unity - Scene이동 후 Player가 떠 있는 경우, 바닥에 있지 않는 경우 Scene이동 이동 후 Player가 바닥에 붙어있지 않고 떠다니는 오류가 생겼다. Player를 다시 ground에 붙여 놓자 해결 방법 01 ground 설정 플레이어를 붙여 놓고 싶은 게임오브젝트에 ground Layer를 설정 한다. 02 Raycast이용해서 ground와 충돌한 지점으로 Player의 y좌표로 변경 void FindGround() { GameObject player = GameObject.Find("Player"); playerTransform = player.transform; RaycastHit hit; if (Physics.Raycast(playerTransform.position, Vector3.down, out hit, 10f, LayerMask.GetMask("gro.. 2023. 7. 18.
백준 C# - 2501 using System; using System.Collections.Generic; namespace baek2 { class Program { static void Main(string[] args) { string n_string = Console.ReadLine(); string[] token = n_string.Split(); int n = int.Parse(token[0]); int k = int.Parse(token[1]); int a = n; List pig = new List(); while (a > 0) { if (n % a == 0) { pig.Add(a); } a--; } pig.Sort(); if (pig.Count < k) Console.WriteLine(0); else Cons.. 2023. 7. 18.
Unity - 다른 객체들을 기반으로 특정 버튼의 기능을 설정하는 방법 1. 버튼 이름 가져오기 다른 객체들의 버튼들에 다 이 스크립트를 추가한다. public class getButtonName : MonoBehaviour, IPointerClickHandler { public static string button_name { get; private set; } public void OnPointerClick(PointerEventData eventData) { GameObject clickedButton = eventData.pointerCurrentRaycast.gameObject; button_name = clickedButton.name; Debug.Log("Clicked button name: " + button_name); } } 2. 버튼 이름을 기반으로 해당.. 2023. 7. 18.
반응형