Socket 관련 함수 정리

공부기록·2023년 10월 16일
0
post-thumbnail

Socket 생성 관련 함수


socket( )

  • 소켓 생성함수로 생성된 소켓은 file discriptor 값이 부여된다.
  #include <sys/socket.h>

  int socket(int domain, int type, int protocol);

  /*성공시 fd값, 실패시 -1값이 반환된다.*/
  • 인자
    • domain : 소켓이 사용할 프로토콜 체계 정보 전달
      • PF_INET : IPv4 인터넷 프로토콜 체계 (수업때 이용할 것)
    • type : 소켓의 데이터 전송방식
    • protocol : 통신에 사용될 프로토콜 정보 전달

Socket type & protocol


연결지향형 소켓 (SOCK_STREAM) - TCP 소켓, IPPROTO_TCP

  • 중간에 데이터가 소멸하지않으며 전송의 순서가 보장되고 데이터의 경계가 존재하지 않는다.
  • 소켓과 소켓의 연결은 반드시 1대1 구조이다.

비연결지향형 소켓 (SOCK_DGRAM) - UDP 소켓, IPPROTO_UDP

  • 빠른 속도의 전송을 지향하며 데이터의 손실 및 파손의 우려가 있다.
  • 데이터의 경계가 존재하며 한번에 전송도리 수 있는 데이터의 크기는 제한되어있다.

bind( )

  • 소켓의 정보 구성은 IP 주소와 port번호가 구성된다.
  #include <sys/socket.h>

  int bind(int fd, struct sockaddr *myaddr, socklen_t addrlen);

  /*성공시 0, 실패시 -1을 반환한다.*/

listen( )

  • 연결요청이라는 데이터를 받기위해 소켓을 리스닝 소켓으로 만드는 함수이다.
	#include <sys/type.h>
    
    int listen(int sock, int backlog);
    
    /*성공시 0, 실패시 -1 반환*/
  • 인자
    • sock : 연결요청 대기상태로 만들고자하는 socket의 fd
    • backlog : 연결요청 대기 큐의 크기

accept( )

  • 클라이언트의 연결요청을 수락하는 함수
  • 이 과정까지 마치면 소켓간의 데이터의 송수신이 이루어진다. 데이터 송수신이 이루어질 소켓도 생성된다.
	#include <sys/socket.h>
    
    int accept(int sock, struct sockaddr* addr, socklen_t* addrlen);
    
    /*성공시 fd, 실패시 -1 반환*/
  • 인자
    • sock : 서버소켓의 fd
    • addr : 연결요청 한 클라이언트의 주소정보를 받을 인자
    • addrlen : 주소변수의 크기 (byte단위)



리눅스 파일 관련 함수


open( )

  • file을 여는 함수
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <fcntl.h>

  int open(const char *path, int flag)

/*성공시 fd, 실패 시 -1 반환*/
  • 인자
    • path : 파일 이름을 나타내는 문자열의 주소 값 전달
    • flag : 파일의 오픈 모두

close( )

  #include <unistd.h>

  int close(int fd)

  /*성공시 0, 실패 시 -1 반환*/

write( )

  #include <unistd.h>

  ssize_t write(int fd, const void* buf, size_t nbytes);

  /*성공시 전달한 바이트 수, 실패 시 -1 반환*/
  • 인자
    • buf : 전송할 data가 저장된 버퍼의 주소값
    • nbytes : 전송할 데이터의 바이트 수

read( )

  #include <unistd.h>

  ssize_t read(int fd, void* buf, size_t nbytes);

  /*성공시 수신한 바이트 수(파일의 끝을 만나면 0), 실패 시 -1 반환*/
  • 인자
    • buf : 수신한 data를 저장할 버퍼의 주소

0개의 댓글

관련 채용 정보