✅ 한 것들
- 윤성우의 열혈 TCP/IP 소켓 프로그래밍
- Project GNC
📖 윤성우의 열혈 TCP/IP 소켓 프로그래밍
Chapter 2 소켓의 타입과 프로토콜의 설정
02-1 소켓의 프로토콜과 그에 따른 데이터 전송 특성
프로토콜
프로토콜 : 컴퓨터 상호간의 대화에 필요한 통신규약
int socket (int domain, int type, int protocol);
프로토콜 체계(Protocol Family) : IPv4, IPv6 등
소켓 타입
- 연결 지향형 소켓(SOCK_STREAM)
- 중간에 데이터가 소멸되지 않고 목적지로 전송된다
- 전송 순서대로 데이터가 수신된다
- 전송되는 데이터의 경계(boundary)가 존재하지 않는다 : 데이터 전송 횟수와 읽기 횟수가 관련 없음
- 비 연결 지향형 소켓(SOCK_DGRAM)
- 전송된 순서에 상관없이 가장 빠른 전송
- 전송된 데이터는 손실과 파손의 우려 있음
- 전송되는 데이터의 경계가 존재 : 데이터 2번 보내면 2번 받는다
- 한 번에 전송할 수 있는 데이터의 크기가 제한됨
프로토콜 : 프로토콜 체계와 소켓 타입이 동일한 프로토콜이 존재할 때 지정해주기 위해 필요
IPv4 + 연결지향형 데이터 전송 : TCP 소켓이 유일
IPv4 + 비 연결지향형 데이터 전송 : UDP 소켓이 유일
02-2 윈도우 기반에서 이해 및 확인
SOCKET socket();
반환이 SOCKET인데, 사실 정수값. 근데 자료형으로 제대로 써라.
🎮 Project GNC
석판 UI 띄우기
esc로 현재 열린 메뉴 닫기
- enum이나 SO로 열 메뉴 관리 가능하다고 함. 일단 간단하게 enum으로 처리.
- enum과 함께 UIManager에 요청 > 각 UI를 담당하는 Manager가 처리 > if문 대신 Awake에서 미리 Dictionary 만들어두기
Tablet마다 다른 UI를 띄워야 함
- enum으로 처리하기엔 확장성이 떨어짐
- Open할 때 정보를 전달해야 함
- ConUIManager에서 초기화할 때 type 하나가 아니라 배열을 가져와서 순회
- enum을 받아서 딕셔너리로 찾기만 하는게 아니라 바로 파라미터로 넣어서 필요하다면 거기서 또 그 정보를 사용
- TabletVar에 type을 넣어서 딕셔너리 초기화 또 사용
캔버스 안에 또 캔버스 넣을 수 있다. 캔버스 하나로만 UI 다 밀어넣지 말 것.
각 UI가 꺼져 있어서 Awake()로 초기화 하기 전에 처음 켰을 때 고유의 훅이 사용할 데이터가 초기화 안돼있는 문제 발생
virtual Init()을 선언한 뒤 UIManager 초기화할 때 순회하면서 같이 초기화해줌
