일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Frustum Culling
- 게임 클래스
- effective C++
- C++
- TCP/IP
- 입방체 매핑
- DirectX
- 디퍼드 렌더링
- FrameResource
- 장치 초기화
- 조명 처리
- Dynamic Indexing
- 게임 디자인 패턴
- 절두체 컬링
- gitlab
- direct3d
- 네트워크
- InputManager
- light
- 게임 프로그래밍
- gitscm
- Deferred Rendering
- 직교 투영
- 큐브 매핑
- Direct3D12
- Render Target
- 노멀 맵핑
- 동적 색인화
- DirectX12
- 네트워크 게임 프로그래밍
- Today
- Total
목록네트워크 게임 프로그래밍 (4)
코승호딩의 메모장
01 스레드 기초 이번 글에서는 다수의 클라이언트를 독립적으로 처리하는 멀티스레드 기법을 사용한다. 이 전에 작성한 예제에서는 두 개 이상의 클라이언트가 서버에 접속할 수 있지만 서버가 동시에 두 개 이상 클라이언트를 서비스할 수 없다는 문제가 있으며 서버와 클라이언트의 send, recv함수 호출 순서가 맞아야 한다는 문제가 있다. 데이터를 보내지 않은 상태에서 양쪽에서 동시에 recv 함수를 호출하면 교착 상태가 발생할 수 있다. 결국 두 프로세스는 recv 함수에서 빠져나가지 못하게 된다. 서버가 동시에 두 개 이상 클라이언트를 서비스할 수 없다는 문제 해결책 1: 서버가 각 클라이언트와 연결하여 통신하는 시간을 짧게 줄인다. 즉, 클라이언트가 데이터를 전송하기 전에 매번 서버에 접속하고 전송 후 ..
01 응용 프로그램 프로토콜과 데이터 전송 TCP 서버-클라이언트의 기본 구조는 정해져 있으며 기본 구조와 핵심 함수를 기반으로 다른 기능을 추가하여 재사용할 수 있다. 즉 뼈대가 되는 코드를 그대로 복사하여 유용한 여러 기능을 만들 수 있다. 응용 프로그램의 고유 기능을 결정하는 부분은 데이터 처리 부분이다. 데이터를 어떤 형식으로 주고 받을지, 어떻게 처리할지는 네트워크 애플리케이션 개발자가 해야 할 가장 중요한 작업이다. 응용 프로그램 프로토콜 : 응용 프로그램 수준에서 주고받는 데이터 형식과 의미, 처리 방식을 정의한 프로토콜 다음과 같이 자신과 상대방의 화면에 동시에 그림을 그리는 기능을 제공하는 네트워크 그림판 프로그램이 있다고 하자. 해당 프로그램이 주고받아야 할 정보는 직선의 시작과 끝점,..
01 TCP 서버-클라이언트 구조 왼쪽 그림은 서버와 클라이언트의 동작하는 모습이다. 클라이언트는 사용자가 입력한 주소를 해석하여 접속 대기 중인 서버에 접속한다. 다음 HTTP를 이용하여 요청 메시지를 보내고 서버는 받은 메시지를 분석 후 HTTP를 이용하여 응답 메시지를 보내준다. 클라이언트는 웹 서버에서 받은 데이터를 처리하여 화면에 표시한다. TCP는 연결 설정을 필요로 하는 연결형 프로토콜이기 때문에 클라이언트와 서버가 연결이 되어야 한다. 그렇다면 핵심 동작을 자세히 살펴보자 서버는 먼저 실행하여 클라이언트가 접속하길 기다린다(listen). 클라이언트는 서버에 접속(connect)하여 데이터를 보낸다(send). 서버는 클라이언트 접속을 수용하고(accept), 클라이언트가 보낸 데이터를 받..
01 소켓 주소 구조체 소켓 주소 구조체는 네트워크 프로그램에 필요한 주소 정보를 담는 구조체이다. 다양한 소켓 함수의 인수로 사용되며 프로토콜들에 따라 주소 지정 방식이 다르기 때문에 다양한 소켓 주소 구조체가 존재한다. 가장 기본은 sockaddr 구조체이다. struct sockaddr{ unsigned short sa_family; char sa_data[14]; }; sa_family : 주소 체계를 나타내는 16비트 정수값. TCP/IP 프로토콜 사용 시 AF_INET 또는 AF_INET6을 갖는다. sa_data : 주소 체계에서 사용할 주소 정보를 담는다. 주소 체계마다 필요한 정보가 다르기 때문에 가장 일반적인 형태인 바이트 배열로 선언되어 있다. TCP/IP 프로토콜 사용 시 IP 주소..