본문 바로가기
Programming/Socket

[C/C++/소켓프로그래밍] Socket이란?

by whitele 2021. 3. 13.
반응형

소켓 Socket

다른 원거리의 컴퓨터와 통신하기 위해 응용프로그램에서 소켓을 사용해야 한다. 소켓은 OS API를 이용해 소켓을 열며 OS마다 조금씩 다른 부분이 있다. 여기서는 리눅스 소켓을 사용한다. 

 TCP/UDP를 이용해서 자료를 전송하려면 소켓을 생성, 운영체제에서 제공하는 소켓 API를 사용한다. 소켓 기술자를 받아와 통신을 시작한다.

소켓을 여는 과정

소켓은 위와 같은 과정을 거치며 TCP/UDP를 기반으로한 전송 계층 함수이다.

TCP/UDP

 tcp는 연결 지향형 프로토콜로 안정성과 신뢰성을 보장한다. 수용가능한 자료만큼 전송하고 흐름제어를 한다. 그만큼 udp보다는 느리지만 신뢰성과 안정성이 보장된 프로토콜이다.

 udp는 비연결 지향형 프로토콜로 속도는 tcp에 비해서 빠르나 신뢰성이 떨어진다. 어느 정도 안정성이 보장되나 100% 신뢰하기 어려우며 패킷을 여러 개로 보낼 때 순서가 다르게 도착할 수 있다. TCP와 달리 미리 경로를 정하지 않는다.

소켓 함수 헤더와 기본형

#include <sys/socket.h>
(int 형 반환) socket(int domain,int type,int protocol);

성공 시 소켓기술자를 불러오며 실패 시 -1을 반환한다. 인자로 domain, type, protocol을 받으며

domain : 프로토콜 패밀리

type : 프로토콜에서 사용할 소켓 유형

protocol : TCP/UDP (IPPROTO_TCP, IPPROTO_UDP)

소켓 종료

소켓 통신을 종료할 때 소켓을 닫아야 하며 close 함수를 이용한다.

#include <sys/socket.h>
#include <unistd.h>
int main()
{
    int soc;
    soc=(PF_INET,SOCK_STREAM,IPPROTO_TCP);
    
    close(soc);
}

 

728x90
반응형

댓글