XMLDeclaration : XML의 버전, 즉 처음 생기는 를 생성하는 클래스 인스턴스 XMLElement : 실질적으로 각 노드 및 데이터 입력 공간을 생성할 수 있다. 이 공간에 데이터를 넣거나, 텍스트를 넣을 수 있다. 파일 생성하는 부분 void ResourcesManager::WriteResource(wstring filePath) { MakeRandomBallers(); wstring finalPath = _resourcePath + filePath + L".xml"; auto path = filesystem::path(finalPath); filesystem::create_directory(path.parent_path()); string forder = path.parent_path()..
하게 된 이유 - 프로젝트들에 앞서 기둥이 되는 서버와 클라이언트 네트워크 코드를 매번 직접 작성했었는데, 이번 기회에 기본이 되는 서버단을 구현해놓고 사용하기 위해서 C++ IOCP 서버와 Select 서버, C# 클라이언트 서버를 구성하였습니다. 그 와중에 이 파트는 C# 비동기 클라이언트 서버를 구축하는 이야기입니다. 먼저 들어가기에 앞서, 비동기란? https://jiyun-hong.tistory.com/107 소켓 통신의 종류 - 동기, 비동기, 블록킹, 논 블록킹 소켓 통신 종류에는 물론 TCP와 UDP가 존재하지만, 그 두 가지에서도 여러 방향으로 나뉘게 된다. 크게 네 가지로 나뉘는데 먼저 동기인가 비동기인가, 두 번째로 블록킹이냐 논 블록킹이냐 두가 jiyun-hong.tistory.co..
소켓 통신 종류에는 물론 TCP와 UDP가 존재하지만, 그 두 가지에서도 여러 방향으로 나뉘게 된다. 크게 네 가지로 나뉘는데 먼저 동기인가 비동기인가, 두 번째로 블록킹이냐 논 블록킹이냐 두가지 형태로 나뉜다. 동기 : 호출하자마자 바로 실행, 즉 호출하는 시점 = 실행하는 시점 비동기 : 호출을 해도 순서가 오지 않으면 늦게 실행될 수도 있음. 즉 호출하는 시점 ≠ 실행하는 시점 블록킹 : 함수를 호출하면 실행될 때 까지 기다린다. 기다리는 동안에는 다른 활동 X 논 블록킹 : 함수를 호출해도 다른 활동 가능, 참고로 비동기 관련해서 두 가지의 패턴이 존재하는데 Reactor Pattern 과 Proactor Pattern 패턴이다. 자세하게는 설명하지 않겠지만, 관련되어서 간단하게 설명하자면 Rea..
하게 된 이유 - 프로젝트들에 앞서 매번 기둥이 되는 서버를 직접 작성했었는데, 이번 기회에 기본이 되는 서버단을 구현해놓고 사용하기 위해서 C++ IOCP 서버와 Select 서버, C# 클라이언트 서버를 구성하였습니다. 그러다보니 C++과 C#을 함께 사용하기 위해 패킷을 직렬화 해야되는데 그 부분을 Protocol Buffer로 하기 위해 설치하게 되었습니다. 먼저 과정에 설명하기 앞서서, 아직 프로토콜 버퍼 뉴비이기 때문에 전체적인 옵션들에 대해서 미숙하다는 점을 미리 설명드립니다. 과정 - 먼저, https://github.com/protocolbuffers/protobuf 에 접속하여 기초 소스들을 다운받아야 합니다. 소스는 GitHub release page를 클릭하면 버전들이 나오게 되고,..
EX 시리즈란? 비동기 입출력의 경우, WSARecv와 WSASend를 통해 send와 recv는 호출을 받을 수 있다. 그렇지만 원래 사용하던 connect나 disconnect, accept는 비동기 호출을 받을 수 없다. 그런 부분을 확장하기 위해 나온 API가 아래 세 가지이다. ※ 사용하기 위해서는 WSAIoctl을 통해 런타임에 초기화를 진행하여야 합니다. WSAIoctl - 초기화 함수 위 원형에서 제일 중요한 부분은 dwIoControlCode 입니다. dwIoControlCode에는 필수적으로SIO_GET_EXTENSION_FUNCTION_POINTER 가 들어가야 합니다. 만약 들어가게 되면 lpvInBuffer에는 GUID라는 특별한 아이덴티티가 들어가게 됩니다. GUID의 종류는 아..
속성 이름 속성 내용 SO_LINGER Close 되었을 때, 소켓 버퍼에 남아있는 데이터를 어떻게 할 것인지 결정 SO_REUSEADDR 커널이 bind 정보를 들고 있을 때, 재 사용이 가능하도록 한다. SO_RCVBUF RecvBuffer 크기 결정 SO_SNDBUF SendBuffer 크기 결정 TCP_NODELAY Nagle 알고리즘 -> 작은 데이터들을 모아서 한번에 보내는 알고리즘( 껏다 켜기 ) SO_UPDATE_ACCEPT_CONTEXT ListenSocket의 특성을 ClientSocket에 그대로 적용 Linger 더보기 LINGER option; option.l_onoff = onoff; option.l_linger = linger; SetSockOpt(socket, SOL_SOCK..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
- Total
- Today
- Yesterday
- Select모델
- 고양이
- 멀티쓰레드
- Dreamhack
- 컨퍼런스
- 야경
- c++
- 드림핵
- 알고리즘
- 학교
- 인제대학교
- 자료구조
- 워셜알고리즘
- 지뢰찾기
- 링크드 리스트
- 스레드풀
- queue
- BFS
- 시스템보안
- 개발
- 백준
- 더블버퍼링
- STL
- 레지스터
- 정보보안
- 보안
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |