목록전체 글 (420)
외로운 Nova의 작업실
안녕하세요. 저번시간까지 소켓프로그래밍을 배웠습니다. 배운 소켓프로그래밍으로 이제 멀티 채팅 콘솔앱을 만들어보겠습니다. 보낸 소켓에 이름을 부여하고 그 소켓이 메시지를 보내오면 서버쪽에서 이름과 함께 메시지를 연결된 클라이언트에게 같이 보내는 서버를 구현하도록 하겠습니다. 이후에는 c#의 winform을 활용해서 ui까지 가지고있는 winform앱도 만들어보겠습니다. 먼저 이름을 부여하지않은 멀티 채팅의 원리는 이러합니다. 1. 서버가 클라이언트를 받는다. 2. 부모 서버는 받은 클라이언트를 클라이언트만 모아놓은 소켓 배열에 추가한다. 3. 이후 받은 클라이언트를 처리하는 쓰레드를 만들고 클라이언트를 쓰레드에 맡겨놓는다. 4-1. 쓰레드는 클라이언트로부터 recv하고 만약 0이 전달되면 클라이언트만 모아..
안녕하세요. 오늘은 지난시간에이어 다중 접속 서버 구현 3번째 방법 멀티쓰레드에대해서 배워보겠습니다. 먼저 "쓰레드"란 무엇일까요? 한번 쓰레드를 프로세서에 비교해 설명해볼까합니다. 우리는 저번 11장에서 멀티 프로세서를 배웠습니다. 프로세서는 ram에 공간을 차지하며 실행중인 프로그램이라고 설명드렸습니다. 또한 구조는 스택,데이터영역,힙으로 이루어져있습니다. 멀티프로세서는 부모프로세서에서 스택,데이터영역,힙 3개를 다 복사해서 따로 ram에 공간을 또 만들어서 자식프로세서를 만드는 구조였습니다. 하지만 쓰레드는 부모프로세서에서 지정 스택만 복사해서 따로 가져가고 데이터영역과 힙은 부모프로세서랑 공유합니다. 이는 멀티프로세서가 굉장히 무거운일이기때문에 고안되었습니다. ram의 자원은 한정적이였기때문에 최..
안녕하세요. 저번장에서는 멀티프로세서 기반 다중서버의 원리에대해서 배워보았습니다. 이번 장에서는 다중 서버 구현의 2번째 방법 멀티 플렉싱에대해서 배워보겠습니다. 멀티 플렉싱방법은 멀티프로세서와 다르게 윈도우에서도 구현이 되어있습니다. 따라서 구현되어있는 c언어 수준의 함수들과 사용방법들도 배워보고 구현도 한번 해보겠습니다. 먼저 멀티플렉싱이라는 단어가 생소하실 것 이라고 생각합니다. 저번 장에서 배운 멀티 프로세서는 부모 프로세서가 자식 프로세서를 만들어서 자식 프로세서에게 알아서 처리하라고 하는 방법이지만, 멀티 플렉싱방법은 부모프로세서가 다 처리하는 방법입니다. 즉, 사람으로 친다면 손이 2개여서 할 수 있는 일이 한정적이지만 멀티플렉싱을 적용시키면 손을 여러개 만들어주는 것입니다. 간단하게 한 프..