TCP Socket 2

강윤경·2022년 10월 31일
0

Network

목록 보기
5/17

서버에서 자주 사용하는 함수


htonl()

  • 헤더

    #include <netinet/in.h>
  • 함수 원형

    unsigned long int htonl(unsigned long int hostshort);
  • 인수

    unsigned long int hostshort
    • long int(4byte) 데이터를 네트워크 byte order(Little Endian)로 변경
  • 반환

    • 리틀 엔디안 방식으로 된 4byte 값

INADDR_ANY

  • 서버에서 클라이언트의 접속을 기다리는 소켓에 주소 정보를 연결하기 위해 접속을 받아들이는 모든 IP를 받기 위한 매크로

bind()

  • 헤더

    #include <sys/types.h>
    #include <sys/socket.h>
  • 함수 원형

    int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);
    • 소켓에 IP 주소와 포트 번호를 지정
    • 소켓 통신 사용 준비
  • 인수

    int sockfd
    • 소켓 디스크립터

      struct sockaddr *myaddr
    • 서버 주소 정보에 대한 포인터

      [socklen_t](https://www.notion.so/TCP-Socket-99e47688fbbc4a74aa87349388607bbc) addrlen
    • struct sockaddr *myaddr 포인터가 가르키는 구조체의 크기

  • 반환

    • 성공 : 0
    • 실패 : -1

listen()

  • 헤더
    #include <sys/socket.h>
  • 함수 원형
    int listen(int sockfd, int backlog)
    • 해당 소켓에서 연결을 기다리는 대기열 큐 생성
  • 인수
    int sockfd
    • 소켓 디스크립터

      int backlog
    • 연결을 기다리는 대기열 큐 사이즈

accept()

  • 헤더
    #include <sys/types.h>
    #include <sys/socket.h>
  • 함수 원형
    int accept(int s, struct sockaddr *addr, socklen_t *addrlen);
    • 클라이언트의 접속 요청을 받아드리고 클라이언트와 통신하는 전용 소켓 생성
  • 인수
    int s
    • 소켓 디스크립터

      struct sockaddr *addr
    • 클라이언트 주소 정보를 가지고 있는 포인터

      socklen_t addrlen
    • struct sockaddr *addr 포인터가 가르키는 구조체의 크기

  • 반환
    • 성공 : 0 이상, 새로운 소켓 디스크립터
    • 실패 : -1

inet_ntoa()

  • 헤더
    #include <arpa/inet.h>
  • 함수 원형
    char *inet_ntoa*(struct in_addr addr)
    • 네트워크 바이트 순서의 Dotted-Decimal Notation의 주소값들로 변환
  • 인수
    struct in_addr addr
    • 32비트 IP 주소
  • 반환
    • 성공 : 변환된 문자열의 포인터
    • 실패 : -1

0개의 댓글