250901

lililllilillll·2025년 9월 1일

개발 일지

목록 보기
281/350

✅ 한 것들


  • 윤성우의 열혈 TCP/IP 소켓 프로그래밍
  • Project GNC


📖 윤성우의 열혈 TCP/IP 소켓 프로그래밍


Chapter 2 소켓의 타입과 프로토콜의 설정

02-1 소켓의 프로토콜과 그에 따른 데이터 전송 특성

프로토콜

프로토콜 : 컴퓨터 상호간의 대화에 필요한 통신규약

int socket (int domain, int type, int protocol);
// domain : 소켓이 사용할 프로토콜 체계(Protocol Family) 정보
// type : 소켓의 데이터 전송방식에 대한 정보
// 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 초기화할 때 순회하면서 같이 초기화해줌



profile
너 정말 **핵심**을 찔렀어

0개의 댓글