개요socket으로 네트워크 엔진 만들기 (1) 에서 만든 패킷을 활용하기 위해서 socket이 제공하는 함수들을 사용할 수도 있지만Packet을 보내거나 읽고, 읽은 내용을 파싱하여 필요한 함수를 호출할 수 있도록 하는 등 여러 기능들을 추상화시킨 class가 있으면 사용하기 편할 것이다.NetworkManager class를 만들어 보자.NetworkManager class의 이름은 network를 가장 잘 manage하는 생물인 Spider로 하자. network를 가장 잘 manage하는 사람 Spider - socket을 생성하고 연결하기Spider는 싱글톤으로 구현되어 프로그램에 유일하게 존재하며, 하나의 socket을 가지고 통신한다. 사용자는 ip, port를 설정하는 것으로 서버 또는 다..
socket 개발자들은 오랜시간 다수의 클라이언트의 요청을 효율적으로 처리하기 위한 방법들을 연구해왔다. 그 결과 수많은 해결책들이 개발되었고, 아직도 더 효율적인 방법을 찾으려 노력중인 부분이다. 다중 클라이언트 요청을 처리하는 해결책입출력 다중화epoll리얼 타임 시그널멀티 스레드멀티 프로세스IOCP그 중 현재까지 가장 빠르고 효율적인 방법으로 사용되는 방법이 바로 IOCP(Input/Output Completion Port)다.IOCP는 멀티 스레드와 같이 사용되는 방법으로 사용할 thread를 미리 만들어 놓고 socket에서의 input 또는 output이 완료(completion)되었을 때 잠들어있는 thread를 깨워서 처리하는 방식이다. 보통 가장 최적화 할 수 있는 thread의 수는 프..
프로그램이 수행해야 할 일서버클라이언트로부터 메세지를 수신해서 다른 클라이언트들에게 뿌려주는 단순한 echo 기능을 수행한다.클라이언트콘솔 화면에서 메세지를 입력받아서 서버로 송신하며, 동시에 서버에서 수신받은 메세지를 화면에 출력한다. 서버리눅스에도 있는 select를 사용해서 각 소켓의 메세지를 수신하고 송신할 수 있지만 winsock에서는 더 사용하기 편하고 강력한 기능을 제공하는 WSAEventSelect를 사용하기로 한다. 클라이언트서버에서 WSAEventSelect를 사용하여 멀티플렉싱을 구현하였기 때문에 클라이언트에서도 해당 함수를 사용해서 stdin과 소켓의 멀티플렉싱을 구현하려 했으나 windows는 socket과 file을 다르게 관리하기 때문에 위 함수를 사용할 수 없었다.아래는 멀티..
- Total
- Today
- Yesterday
- Spring
- Cocos2d-x
- 수학
- 드라마
- machine learing
- mongoDB
- game
- 알고리즘
- Git
- ios
- ue4
- SwiftUI
- DesignPattern
- SOCKET
- database
- OS
- winsock
- swift
- C++
- C
- 운영체제
- rxswift
- JSP
- SHADER
- C/C++
- scala
- 자료구조
- 국내여행
- 데이터베이스
- Java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |