멀티프로세싱, 멀티쓰레딩, 멀티플렉싱
2022. 10. 3. 23:35
Development/Network
운영체제 및 프로그래밍을 공부하다보면 자주 사용되는 멀티프로세싱, 멀티쓰레딩, 멀티플렉싱과 같은 단어와 각각의 장단점들에 대해 잘 정리되어있는 내용들을 모아봤다. 멀티플렉싱이란? 여러명이서 통신할때 하나의 채널만 가지고 통신하는 방식을 말한다. 멀티쓰레드, 멀티 프로세스가 여러 채널을 만들어 통신한다면 멀티플렉싱은 하나의 프로세스, 스레드를 가지고 여러 명의 통신을 연결시킨다. 여러명이 접속할 수 있는 서버를 만들기 위해 여러 IO모델들이 사용된다. 오늘은 대표적인 멀티플렉싱 방식의 IO 모델인 select에 대해 살펴보고자 한다. 1. select 동작 과정 서버는 여러 클라이언트의 접속을 받는다. 그 후 각 클라이언트의 이벤트(데이터 수신여부, 데이터 송신가능 여부, 오류 수신 여부 등)의 이벤트가 ..
[Windows Socket] - Client
2022. 9. 8. 13:55
Development/Network
이번엔 Winsock을 사용하여 Clinet를 간단하게 만들어 볼 생각이다. 지난번 작성한 Server 코드에 비하면 굉장히 간단하다. Client 프로그램을 만드는 순서는 아래와 같다. Winsock을 초기화합니다. 소켓을 만듭니다. 서버에 연결합니다. 데이터를 보내고 받습니다. 연결 끊기를 선택합니다. Server를 만드는 부분에서 bind, listen, accept과 같은 부분들이 빠져있다. Client 소켓을 생성하고 연결 할 IP,Port등을 통해 연결을 시도하면 된다. 1,2,4,5번은 이 전 포스트와 동일하므로 생략하도록 하겠다. 서버에 연결합니다. 우선 연결할 Socket 하나를 생성한다. 접속 요청할 소켓의 정보(address family, IP, Port)를 SOCKADDR_IN 구조..
[Windows Socket] - Server
2022. 9. 8. 13:14
Development/Network
오늘은 지난 포스트에 이어서 Winsock을 사용하여 간단한 server를 만들어보려고 한다. 지난 포스트에서 서버는 아래와 같은 절차가 있다고 언급했다. Winsock을 초기화합니다. 소켓을 만듭니다. 소켓을 바인딩합니다. 클라이언트에 대한 소켓에서 수신 대기합니다. 클라이언트에서 연결을 수락합니다. 데이터를 수신하고 보냅니다. 연결 끊기를 선택합니다. 위와 같은 순서로 한번 만들어 보려고 한다. Winsock을 초기화합니다. 우선 헤더 파일 및 lib 파일과 연결한다. Winsock 초기화에 대한 부분은 저번 포스트에서 다뤘으니 넘어가도록 하겠다. #include #include #include #pragma comment(lib, "ws2_32.lib") int main() { WSADATA wsa..
[Windows Socket] - 시작하기
2022. 9. 8. 11:08
Development/Network
Windows Socket Programming Windows 환경에서 소켓프로그래밍을 공부해보려고 한다. 네트워크 소켓(network socket)은 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다. 오늘날 컴퓨터 간 통신의 대부분은 인터넷 프로토콜을 기반으로 하고 있으므로, 대부분의 네트워크 소켓은 인터넷 소켓이다. 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다. 아래와 같은 요소들로 구성되어있다. 인터넷 프로토콜 (TCP, UDP, raw IP) 로컬 IP 주소 로컬 포트 원격 IP 주소 원격 포트 리눅스에서의 소켓 프로그래밍과 거의 동일하다. 하지만 몇가지 더 해줘야 하는것들이 있고, 함수명이 좀 다른 것들이 있다. 우선, 서버와 클라이언트를..