새소식

Qt/Network

Qt Network Module

  • -

네트워크 프로그래밍이란?

 

프로그램은 일반적으로 정보를 전달 하거거나, 전달받는 작업의 연속입니다.

입출력의 대상은 화면, 키보드, 파일, 데이터베이스, 다른 프로그램 등 다양합니다. 

 

네트워크 프로그래밍은 네트워크를 대상으로 입출력 하는 프로그래밍을 의미합니다.

"서로 다른 두 대 이상의 컴퓨터"가 네트워크를 통해 데이터를 주고받는 입출력 프로세스를 구현하는 것입니다.

 

서로 다른 컴퓨터 간에 정보를 주고받거나, 한 컴퓨터가 다른 컴퓨터에게 데이터를 전달하고, 명령을 내리는 방식으로 

메일 서비스, 검색, 메신저 등의 네트워크 프로그램이 동작합니다. 

 

 

소켓이란?

 

소켓이란 네트워크를 통해 데이터를 주고받는 방법을 통신 규약에 맞게 함수로 구현해 놓은 것입니다. 

이 함수들은 소켓의 생성, 연결, 데이터의 송수신 등의 작업 등을 구현 해놓은 API입니다.

 

물론 소켓(Socket)으로 네트워크 통신 기능을 구현하기 위해서는, 소켓의 생성, 만들어진 소켓을 통해 데이터를 주고 받는 절차에 대한 이해, 운영체제 및 프로그래밍 언어에 종속적으로 제공되는 소켓 API 사용법을 숙지해야 하지만, 개발자는 소켓의 구현만 고려하면 되는 프로그래밍 이점을 가집니다.

 

 

Socket Network Program 실행 흐름

 

서버(Server) 흐름 클라이언트(Client) 흐름
[1]생성 
1. *1)서버 소켓 생성 [1]생성
1. *3)클라이언트 소켓 생성
[2]결합 2. 서버 소켓에 IP 주소와 Port 번호 결합    
[3]대기 3. 클라이언트 요청 대기    
    [2]연결 2. 서버로 연결 요청 
[4]수락 4. 클라이언트 요청 정보와 서버 소켓 정보를 결합해 *2)연결 소켓을 생성     
[5]송수신 5. 연결 소켓을 통한 데이터를 송수신 [3]송수신 3. 서버 소켓에서 연결 수락 후, 데이터 송수신
[6]닫음 6. 통신이 완료되면, 연결 소켓을 닫음 [4]닫음 4. 통신이 완료되면, 소켓 닫음

* 2) 연결 소켓은, 서버 소켓에서 클라이언트와 연결된 연결 소켓으로 서버 소켓과 다르다.

* 1) 서버 소켓은, 일반적으로 다수의 클라으언트 소켓으로부터 연결 요청을 받는다.

* 3) 클라이언트 소켓은, 서버와 연결 된 뒤, 별도의 소켓을 생성하지 않고, 같은 소켓을 사용한다.  

 

 

Socket API 

 

C/C++ Socket API 를 사용하여 네트워크 프로그래밍 하는 이유는, 운영 체제와 가까운 저수준(low-level) 프로그래밍을 지원하기 때문에 더 세밀하게 네트워크 동작을 제어하거나 최적화하여 빠른 응답 시간이 필요한 네트워크 애플리케이션을 구현 할 수 있기 때문입니다.

 

  API / 클래스 설명 제공 기능 OS/PL
Unix Socket API 네트워크 표준 API TCP, UDP 등
다양한 네트워크에 사용
Unix(Ubuntu, Redhat..)
Window WinSock2 API Socket API 윈도우 버전 Window(C/C++)
C# .NET Sockets WinSock2 API C# 버전 Window(C#)
TcpClient Sockets 클래스 랩핑됨 TCP, UDP 전용
TcpListner
UdpClient

 

 

Qt Network Module

 

Qt C++ 에서는 Socket API 보다 편리한 Qt Network Module 을 사용할 수 있기 때문에

보다 쉽게 네트워크 응용 어플리케이션을 구현할 수 있습니다.

 

QT
QTcpSocket Socket API 랩핑됨 TCP 기반의 네트워크 클래스 Qt, Multi Platform
QTcpServer TCP 기반의 서버 클래스
QUdpSocket UDP 기반의 네트워크 클래스

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.