본문 바로가기
일상,취미

다시 시작하는 TIL 9일차

by 진득한진드기 2024. 6. 18.

오늘 한일

 

오늘 어제 싸질러놓은 이벤트 생성함수를 해결하지는 못했지만 갈피를 잡았다.

 

먼저 각 좌표에 맞는 이벤트를 모두 생성한다음 그 후에 좌표별로 모두 처리하려고 하면 메모리적으로나 하나하나 이벤트 겹치는것에 대한 처리하기가 굉장히 복잡해진다.

 

이는 틀렸다고 생각이 들었다.

 

그래서 하루종일 고민하고 어떻게 구현해야되나 싶었지만 틀이 어느정도 잡혔다.

 

window api를 사용해서 직접적으로 그리는 것이다.

 

그리고 그려진 이벤트를 이벤트를 위임해서 마우스좌표에서만 반응하게 바꾸는것이다.

 

이벤트를 위임하면 한번만 생성해서 이벤트가 이동되는 느낌이므로 객체를 직접적으로 할당하고 free하는 과정이 더 줄어들 것이다.

 

특정 마우스 좌표와 내가 미러링 되서 나오는 화면의 좌표 일치 시키는게 다음 벽이긴한데 그전까지 해결과정이 머리속에 그려져서 다행이다.

 

내일은 꼭 다 구현해보자.

 

오늘의 퇴근 후 공부

 

소켓은 다양한 송수신 방법을 지원하기 위해 만들어진것


내가 원하는 형태로 소켓을 만들 수 있음

 

서로 같은 방법을 통해서만 데이터를 주고 받을 수 있다.

 

여기서 말하는 같은 방법이 프로토콜 이라는 것이다.

 

int socket(int domain, int type, int protocal);

domain : 소켓이 사용할 프로토콜 체계 정보 전달
type: 소켓의 데이터 전송방식에 대한 정보 전달

protocal: 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달.


3개의 소켓 통신 정보 인자이다.

 

같은 도메인이라도 사용방법은 다르기 떄문에 인자를 나눈다.

 

간단하게 소켓의 방법은 우편이라고 하면 type은 등기나 일반 우편 방법을 사용한다고 생각하면 된다.

 

프로토콜 체계

 

PF_INET = IPv4 인터넷 프로토콜 체계
PF_INET6 = IPv6 인터넷 프로토콜 체계
PF_LOCAL = 로컬 통신을 위한 UNIX 프로토콜 체계
PF_PACKET = Low Level 소켓을 위한 프로토콜 체계
PF_IPX = IPX 노벨 프로토콜 체계


소켓의 타입

 

소켓의 타입
- 데이터 전송방식을 의미한다.
- 소켓이 생성될 때 소켓의 타입도 결정되어야 한다.

 

프로토콜 체계 PF_INE의 대표적인 소켓 타입 둘
- 연결 지향형 소켓 타입 = 간단하게 생각해서 전화
- 연결 지향형 소켓 (SOCK_STREAM)의 데이터 특성
- 중간에 데이터 소멸되지 않는다.
- 전송 순서대로 데이터가 수신된다.
- 데이터의 경계가 존재하지 않는다.
- 소켓 대 소켓의 연결은 반드시 1대 1구조

 

- 비 연결 지향형 소켓 타입 = 편지
- 비 연결 지향형 소켓(SOCK_DGRAM)의 데이터 전송 특성
- 전송순서 상관없이 빠른 속도의 전송을 지향
- 데이터 손실 및 파손의 우려가 있다.
- 데이터의 경계가 존재한다.
- 한번에 전송할 수 있는 데이터의 크기가 제한된다.

 

프로토콜의 최종 선택

 

코드로 보면

 

int tcp_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);


int udp_socket = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);

Tcp와 Udp는 다음과 같이 분리하여 사용할 수 있다.

'일상,취미' 카테고리의 다른 글

다시 시작하는 TIL 11일차  (0) 2024.06.20
다시 시작하는 TIL 10일차  (0) 2024.06.19
다시 시작하는 TIL8일차  (1) 2024.06.17
다시 시작하는 TIL7일차  (1) 2024.06.13
다시 시작하는 TIL6일차  (1) 2024.06.12