
전체 글

[SERVER] Overlapped I/O
1. Overlapped I/O 1.1 Overlapped I/O 의미 - 하나의 스레드에서 둘 이상의 패킷 데이터를 통신용 소켓에 송수신 - 여러 개의 소켓에 입출력이 중첩된 상황 1.2 Non-blocking Code 수정 https://choiprogramming.tistory.com/106 [SEVER] Non-blocking Socket 1. Blocking Socket 1.1 Blocking - accept, connect, recv, send - 대부분 소켓 관련 함수들은 호출 스레드를 블로킹 상태로 만듦 - 블로킹 상태: 현재 스레드가 더 이상 코드를 진행하지 않고 block 상태로 멈춰 있 choiprogramming.tistory.com 1.3 Overlapped I/O - overla..

[SERVER] WSAEvent Select
1. WSAEventSelect (Windows Socket Async) 1.1 WSAEventSelect 의미 - 입출력 함수를 안전하게 호출할 수 있는 시점을 운영체제가 알려줌 - 단순한 입출력 방식보다 편리하게 여러개의 소켓을 처리 - 운영체제에서 함수 호출의 시점을 알려주기 때문에 비동기처럼 처리할 수 있음 - 비동기 입출력 모델 (Overlapped I/O, IOCP) 1.2 Select Code 수정 https://choiprogramming.tistory.com/110 [SERVER] Select 1. Select 1.1 Non-blocking Socket의 문제 - 함수의 결과를 예상X - 패킷 수신 여부와 관계없이 바로 리턴 → buf의 상태가 어떤지 알 방법X - 소켓이 Read/Wri..

[SERVER] Select
1. Select 1.1 Non-blocking Socket의 문제 - 함수의 결과를 예상X - 패킷 수신 여부와 관계없이 바로 리턴 → buf의 상태가 어떤지 알 방법X - 소켓이 Read/Write 할 수 있는 상태인지 아닌지 판별해 주는 select 함수가 필요 1.2 Select - Select는 읽기, 쓰기, 예외 및 관찰 대상으로 이루어짐 - 적어도 하나의 소켓이 준비되면 리턴 - 데이터를 전송할 소켓 및 데이터, 데이터 크기 저장 - 클라이언트에서 데이터를 전송할 때 다른 고유 번호가 존재 - 클라이언트가 가지고 있는 데이터를 받기 위해 Session 생성 struct Session { SOCKET socket = INVALID_SOCKET; char recvBuffer[MAX_BUFFER]..