카테고리 없음

TCP/IP 네트워크 소켓 프로그래밍 [C/C++]

언제나휴일 2022. 6. 14. 09:57
반응형

1. TCP/IP 네트워크 소개

 
TCP/IP 네트워크 소개

 

네트워크는 송신자와 수신자 사이에 메시지를 주고 받기 위해 구성하고 있는 것들의 집합입니다. 그리고 네트워크를 구성하는 모습이 그물 구조와 비슷하여 네트워크 망이라고 부릅니다.

네트워크 망에는 전화 망과 디지털 통신 망 등이 있는데 이 책에서는 IEEE표준인 이더넷(Ethernet) 망을 기준으로 기술하였습니다. 네트워크 망에서 송신자와 수신자 사이에 메시지를 주고 받기 위해서는 통신 규칙과 방법에 관한 약속이 필요한데 이를 네트워크 프로토콜이라 부릅니다. 이 책에서는 이더넷 망의 기본 프로토콜인 TCP/IP 프로토콜로 통신하는 방법을 소개합니다.


2. 윈도우즈 소켓

윈도우즈 소켓

네트워크 통신 프로그래밍을 하기 위해서 사용하는 입출력 인터페이스를 소켓이라 부릅니다. 버클리 대학에서 시작한 BSD 유닉스가 최초의 소켓이며 흔히 소켓이라 부르면 버클리 소켓을 말합니다.

그리고 버클리 소켓을 기반으로 마이크로 소프트 사에서 윈도우즈 운영체제에서 사용할 수 있게 만든 소켓을 윈도우즈 소켓이라 부르며 흔히 윈속이라 줄여서 불리고 있습니다. 윈속은 윈도우즈 운영체제의 버전 업그레이드와 함께 변화하였는데 95년에 윈속 2.0을 발표하였으며 이 책에서는 윈속 2.2 버전을 사용합니다.

이번 장에서는 윈속에서 제공하는 기본적인 함수와 자료형들에 관하여 살펴봅시다.


3. TCP 에코 서버/클라이언트 만들기

 
TCP 에코 서버/클라이언트 만들기

이번 장에서는 TCP 프로토콜을 이용하여 간단한 에코 서버와 에코 클라이언트를 만들어 봅시다. 이를 통해 여러분은 윈속 라이브러리에서 제공하는 기본 함수들의 사용법을 살펴볼 수 있습니다.

에코 서버란 클라이언트에서 수신한 데이터를 클라이언트에게 재전송하는 서버를 말합니다.

여러분은 이번 장을 통해 가장 단순한 형태의 소켓 프로그래밍을 해 볼 수 있습니다. 그리고 여기에서 프로그래밍하는 절차는 대부분의 다른 소켓 프로그래밍에도 그대로 적용할 수 있습니다. 따라서 단순한 코드이지만 소켓 프로그래밍을 이해하는 가장 기본적인 내용이라고 생각하세요.


4. 스레드를 이용한 멀티플레싱

스레드를 이용한 멀티플레싱 - 에코 서버
 

3장에서 만든 TCP 에코 서버는 동시에 하나의 클라이언트에게만 서비스를 제공할 수 있습니다. 하나의 서버가 동시에 여러 클라이언트에게 서비스를 제공하는 것을 멀티플렉싱(Multiplexing)이라 부릅니다.

이번 장에서는 스레드를 이용하여 멀티플렉싱을 구현하는 방법을 알아보기로 합시다.


5. WSAEventSelect를 이용한 멀티플렉싱

WSAEventSelect를 이용한 멀티플렉싱 - 채팅 서버/ 클라이언트 개발 동영상

 

이번에는 WSAEventSelect 이용한 멀티플렉싱을 살펴봅시다.

채팅 서버는 클라이언트로부터 메시지를 수신하면 채팅 방에 접속한 모든 클라이언트에게 메시지를 전달해 주어야 합니다. 이와 같은 처리를 위해서는 채팅 방에 접속한 전체 클라이언트 정보를 기억하고 있어야 합니다.

특히 채팅 서버에서는 별도의 쓰레드없이 Listen 소켓에 클라이언트의 연결 요청이 있는지와 클라이언트로부터 수신한 메시지가 있는지 확인하는 작업이 필요합니다.

WSAEventSelect 모델은 특정 소켓에 특정 사건이 발생하였는지 확인하기 위한 이벤트 개체를 만들어 처리하는 모델입니다. 채팅 서버를 예를 들면 Listen 소켓에 연결 요청이 있을 때 신호 상태로 전이할 이벤트 개체를 생성합니다.

전체 내용과 설명 및 소스 코드는 언제나휴일 사이트에 있습니다.

 

 

1. TCP/IP 네트워크 소개 [TCP/IP 소켓 프로그래밍 with 윈도우즈] – 언제나 휴일

네트워크는 송신자와 수신자 사이에 메시지를 주고 받기 위해 구성하고 있는 것들의 집합입니다. 그리고 네트워크를 구성하는 모습이 그물 구조와 비슷하여 네트워크 망이라고 부릅니다. 네트

ehpub.co.kr

 

반응형