Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- Toon Shader
- Cell Look
- OculusMotionVectorPass
- Rim Light
- ColorGradingLutPass
- Three(Two) Tone Shading
- Cartoon Rendering
- working set
- URP
- C언어
- 작업 집합
- Cell Shader
- 개인 바이트
- Private Bytes
- URP로 변경
- 벡터
- ASW(Application SpaceWarp)
- Windows Build
- 메모리 누수
- 프로그래밍 기초
- AppSW
- Virtual Byte
- 게임 수학
- VR
- 3d
- 가상 바이트
- Specular
Archives
- Today
- Total
WinCNT
소켓 본문
소켓
Unix가 시초, 버클리 대학에서 만들었다
그 이후 각각의 운영체제에 맞게 개발되었다
소켓 통신
Client에 소켓을 만들고, 서버에도 하나 만들자
그 다음에는 소켓에 IP주소를 부여하자
OS 입장에서는 어떤 프로세스에게 부여할지 알아야 한다
그 때 필요한 것이 Port
채팅 클라이언트 - 채팅 서버를 예로 들어보자
클라이언트에서 데이터를 LAN카드를 통해 보내자
서버의 LAN카드에 도착(IP주소를 알테니)
그 다음 포트로 채팅 서버를 찾을 것이다
그 때 도착한 데이터는 소켓 버퍼 안에 담긴다
소켓을 많이 만들면 소켓마다 버퍼를 만들 테니 메모리를 많이 차지한다
소켓 버퍼는 커널 영역이므로, 소켓 버퍼를 많이 만들면
결국 터져서 블루 스크린이 터질 것이다
FTP와는 다르다
FTP는 소켓 하나에 데이터를 루프를 돌면서 꾸준히 보낸다는 이미지
채팅의 경우는 소켓은 많은데 도착하는 데이터는 작고 빈도도 많지 않다
문제는 많은 소켓들이 어디에 도착했는지를 구분해야 한다
예전에는 폴링(계속 물어보는) 방식을 사용했지만
최근에는 Idle Queue에 넣어서 도착하면 인터럽트를 발생해서
CPU에 알려주는 방식을 채택하고 있다(IOCP 방식)
IOCP에서는 동시에 수행시킬 스레드 개수를 설정할 수 있다
잘못 짠 코드의 예
A가 B에게 귓속말을 한다고 할 때,
User List를 검색(Lock을 건다)하고, Send(시스템 콜)을 한다
심지어 Send 시에는 소켓 버퍼의 Read, Write에 복사만 할 뿐 바로 보내지는 것도 아니다
'게임 프로그래밍(학습 내용 정리) > 네트워크 프로그래밍' 카테고리의 다른 글
TCP/IP 계층 구조 (0) | 2022.05.02 |
---|---|
네트워크로 데이터를 송신하는 과정 (0) | 2022.04.26 |
UDP vs TCP and Socket (0) | 2022.04.25 |
Socket Programming in C/C++ (0) | 2022.04.18 |
컴퓨터 네트워크의 구성 요소 3가지 (0) | 2022.04.11 |