본문 바로가기

분류 전체보기

(231)
TCP/UDP 프로토콜 TCP (Transmission Control Protocol)TCP 는 네트워크 통신에서 연결 지향적이면서 신뢰성을 보장하는 프로토콜이다. OSI 7계층 기준으로 전송 계층에서 사용하는 프로토콜이다.  3-way handshake 방식을 이용한 연결 성립 방식 3-way handshake3-way handshake 는 TCP 의 연결 과정에서 사용하는 절차이다. 송신자와 수신자가 데이터 전송을 시작 전에 서로가 연결되어 있는지 확인하는 과정이다. TCP의 연결 지향적 프로토콜의 신뢰성을 보장한다.1.  SYN 클라 -> 서버로 연결 요청클라가 서버에 TCP 연결을 요청하는 패킷을 보내는 것.SYN 플래그가 있어 연결 요청임을 알 수 있다. 플래그에는 시퀀스 번호를 포함한다.2. SYN-ACK서버 -> ..
네트워크 ( OSI 7 계층, TCP/IP 4 계층 프로토콜 ) 네트워크 란?컴퓨터 혹은 기타 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유선 혹은 무선으로 연결된 통신 체계 네트워크의 대표적인 기능들애플리케이션 목적에 맞는 통신 방법 제공신뢰할 수 있는 데이터 전송 방법 제공네트워크 간의 최적의 통신 경로 결정목적지로 데이터 전송노드 사이의 데이터 전송 네트워크 프로토콜통신 기능이 제대로 동작하기 위해 통신 참여자들 사이에 약속된 통신 규약위의 네트워크 기능과 역할이 많아 하나의 프로토콜로 정의하기 어렵다.**모듈화** 를 통해 기능 별로 분리해서 관리한다. OSI model( 7 layers )네트워크가 수행하는 역할(기능) 별로 계층적 구조를 가지게 만들어 범용적인 네트워크 구조를 만드는 것.*TCP/IP* 스택 ( 4 layer )은 인터넷에 특화된..
24-11-22 네트워크 큐브 생성 동기화 각각의 플레이어들이 큐브를 생성하고 이것을 동기화하자 만든 클래스의 가장 중요 부분 : 게임 모드에서 상태 변경 >> 서버에서만 변경되는것, 변경된 변수의 동기화가 별도로 필요  큐브 생성 및 동기화 로직 서버에서 멀티캐스트를 호출하는 형식이다.  ChangeTurn 이 실행되는데 이 함수를 게임모드가 가지고 있다.  그런데 게임모드는 서버만 가지고 있기 때문에 CanMakeCube 라는 bool 변수는 서버에서만 변경되는 것.모든 클라가 이 변경점을 알 수 있도록 동기화 되어야한다.   변수를 동기화해서 변수 값이 업데이트 될 때 마다 동기화가 모든 클라에게서 동기화가 진행된다.
24-11-21 언리얼 네트워크 캐릭터 동기화 캐릭터 간에 동기화플레이어들의 움직임을 동기화 및 공격 시 데미지 연산 동기화 Multicast 는 서버가 호출해야 모든 클라에게 전달된다. 피스톨을 줍는 행위 자체를 서버에게 전달한다.서버는 해당 클라가 총의 소유 여부에 따라 부착 / 해제를 Multicast 로 모든 클라에게 전달한다.   MainUI 가 Local 에만 보인다. ( 총을 주운 클라만 )IsLocallyControlled 함수를 사용해서 로컬만 본인의 MainUI 를 가지고 있다.  로컬은 MainUI를 사용하지만 로컬이 아닌 클라는 머리 위에 HPBar 를 생성한다.  총을 쏘는 행위는 모든 클라가 확인해야한다 ( 동기화 )총 쏘는 행위를 Server 에게 알려주고 Multicast 를 호출하여 모든 클라가 총을 쏘는 행위를 동기화..
24-11-20 언리얼 네트워크 - 색상 동기화와 RPC RPC - 함수를 이용한 동기화 ( 이벤트와 같이 특정 한 번에 사용되어질 때 많이 사용 )리플리케이트 - 변수를 동기화 ( 빈번하게 변환되는 값들은 리플리케이트 ) 리플리케이트를 이용한 색상 동기화   굳이 시간까지 동기화가 필요가 없다. 서버만 시간을 쓰고 색상은 동기화하자  일단 리플리케이트 방식  함수를 이용한 생각 동기화   OnRep 함수는 클라이언트 입장에서만 동기화가 필요할 시에 호출된다. CPP 기준이다. 블루프린트에서는 OnRep 이 서버에서도 불려진다. 서버가 클라이언트의 함수를 호출 요청하면 클라이언트RPC클라이언트가 서버의 함수를 호출 요청하면 서버RPCMultiCastRPC 모든 클라이언트에게 신호를 보낼 때 모든 클라가 특정 함수를 호출한다. RPC를 이용한 크기 변경 언리얼의..
2024-11-19 언리얼 네트워크 동기화 RPC ( Remote Procedure Call ) 다른 주소 공간에서 함수나 프로시저를 호출하는 방법. 로컬 함수처럼 호출되지만, 실제로는 네트워크를 통해 다른 시스템에서 실행된다.   클라 -> 서버 ( Server RPC )일반적으로 클라이언트가 서버에 요청을 보내고 서버는 해당 요청을 처리한 후 결과를 반환합니다.    만약 A , B , C 객체가 있고 A 가 Liten  서버를 만든다면A 기준 A는 Invalid Connection,  B 는 Valid Connection, C 는 Valid Connection B 기준 A 는 Invalid Connection, B는 Valid Connection,  C는 Invalid Connection C 기준 A 는 Invalid Connection B..
바이트 패딩 바이트 패딩은 메모리 정렬 요구사항을 충족시키기 위해 구조체나 클래스의 멤버 사이에 추가적인 바이트가 삽입되는 현상이다. 데이터의 효율적인 접근을 도와주는 역할을 하기 때문에 접근에 대해서 성능 최적화 역할을 한다. 메모리 정렬이란?CPU는 특정 바이트가지의 데이터를 읽고 쓰는 것이 효율적이다.만약 4바이트 정렬이라면 필요한 데이터 타입은 메모리에서 4의 배수 주소에서 시작해야 최적의 성능을 제공한다. 정렬되지 않은 주소의 데이터를 읽고 쓰면 CPU가 추가 작업을 해야하는 단점이 생긴다. 바이트 패딩의 상황구조체 또는 클래스에서 멤버 변수를 나란히 배치할 때, 각 변수는 자신의 데이터 정렬 요구사항에 맞게 배치되야 한다.이때, 정렬을 맞추기 위한 패딩 바이트가 삽입된다. class WhatIsPaddin..
프로그래머스 - 섬 연결하기 #include #include #include using namespace std;bool Compare(vector& a, vector& b){ return a[2] & parent, int x){ if(parent[x] != x) { parent[x] = Find(parent, parent[x]); } return parent[x];}void Union(vector& parent, vector& rank, int x, int y){ int node1 = Find(parent, x); int node2 = Find(parent, y); if(node1 != node2) { if(rank[node1] > rank[node2..