전체 글339 10. TCP vs UDP 기본 개념 단말기 = 고객 스위치 = 아파트 경비실 라우터 = 택배 배송 센터 상황 : 고객 a가 고객 b에게 택배(데이터)를 보내고 싶다. 고객 a는 현대 아파트에 살고, 고객 b는 자이 아파트에 산다. a가 b에게 택배를 보내기 위해서 거쳐야 하는 단계는? 1. 아파트 경비실에서는 해당 아파트에 거주하는 고객들의 정보에 대해 알고 있다. 2. 따라서 고객 a는 현대 아파트 경비실에 택배를 전달하고 경비실은 택배 배송 센터에 택배를 전달한다. 3. 택배 배송 센터는 택배를 고객 b가 거주하는 자이 아파트 경비실에 전달한다. 4. 자이 아파트 경비실은 최종적으로 고객 b에게 택배를 전달한다. - 생략된 부분은 택배 배송 센터에서 a아파트와 b아파트를 배송하는 이동 구간이 '인터넷'이라는 점이다. TCP .. 2023. 12. 11. 9. 소켓 프로그래밍 이번 강의는 소켓 프로그래밍에 대한 내용이다. 이 내용은 열혈 TCP/IP 책에서 숙지한 내용들과 겹치는 부분이 많아서 숙지하는데 어렵지 않았고 내용을 복기하고 디테일을 잡아가는 마음으로 공부했다. 서버/*소켓 초기화*/ WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData)) return 0;- WSADATA는 WSA + DATA이며, WSA는 Windows Socket API의 약자이다. - WSAStartup함수를 호출할 때 필요한 정보를 저장하고 전달하는데 사용되는 구조체다. SOCKET listenSocket = socket(AF_INET/*IPv4*/, SOCK_STREAM/*TCP 방식 사용*/, 0); if (listenSocket == IN.. 2023. 12. 11. 8. 스마트 포인터 스마트 포인터에 대한 내용이지만 결과적으로 스마트포인터의 동작이 멀티스레드 환경에서 어떻게 안전한지를 이해해야 하는 강의였다. 참조계수 관리 방식- 참조계수 관리 방식이란 현재 해당 포인터가 참조된 횟수를 관리해서 0인 경우 메모리를 삭제하는 방식이다. - 이 방식을 수동으로 관리하거나 자동으로 관리할 수 있는데, 스마트포인터는 이 참조계수를 자동으로 관리한다 - 수동으로 관리했을 때는 멀티스레드 환경에서 문제가 발생하는데, 스마트포인터를 사용하면 문제가 발생하지 않는다 그 이유에 대해 설명한다. 수동으로 관리했을 때의 문제점- 수동으로 관리하는 것은 말그대로 필요에 따라 AddRef, ReleaseRef 함수를 통해 참조계수를 줄이고 늘림으로써 수동으로 관리하는 것이다. - 1차적으로 캐치할 수 있는 .. 2023. 12. 11. 7. 이벤트와 조건변수 이벤트- 이벤트도 동기화 기법 중 하나로, 스핀락과 비교해보면 스핀락은 자리가 날 때까지 무한히 대기하는 것이고, 이벤트는 승무원에게 자리가 나면 불러달라고 하고 자러 가는 것 - 예제에서의 이벤트는 Windows API를 사용하는 예제이며, 커널오브젝트를 사용한다 - 커널 오브젝트는 Usage count와 Signal State(Signal / Non-Signal)을 가진다. - 먼저 아래는 스핀락을 이용한 Producer / Consumer 패턴#include #include #include #include using namespace std; mutex m1; mutex m2; HANDLE hEvent; queue q; void Producer() { while (true) { lock_guard .. 2023. 12. 11. 이전 1 ··· 17 18 19 20 21 22 23 ··· 85 다음