본문으로 바로가기
homeimage

소켓

해당되는 글 18
  • thumbnail
    컴퓨터/프로그래밍

    TCP/IP 전송 버퍼 빈 용량 확인하는 방법

    TCP/IP 전송 버퍼 남은 용량 확인 이유 소켓통신 중에 TCP/IP 통신은 반드시 전달해야 하는 데이터를 보내거나 대용량의 데이터를 순서에 맞추어 전송할 때 매우 유용합니다. UDP/IP를 오토바이 택배라고 한다면 TCP/IP는 컨베이어 벨트로 물건을 하나씩 전달하는 것과 비교할 수 있습니다. 오토바이 택배는 배달 사고가 날 수 있지만, 컨베이어 벨트는 좀 더 안전하게 전달할 수 있습니다. 오토바이 택배는 데이터가 많은 경우 여러 명으로 나누어서 보내다 보면 도착하는 순서가 바뀔 수 있지만, 컨베이어 벨트는 물건을 올려놓는 순서대로 상대방이 받습니다. 이렇게 TCP/IP는 전송할 데이터를 write()하면 알아서 수신자가 받아서 편한데요, 이렇게 편한 이유는 중간에 TCP 프로토콜이 열심히 일하기 때..
  • thumbnail
    컴퓨터/프로그래밍

    tcp udp 차이점과 프로그래밍에서 주의해야할 부분

    tcp/ip와 udp/ip의 다른 점은? 소켓 통신 tcp/ip와 udp/ip를 학습을 통해 어떤 프로토콜인지는 알지만, 정확한 차이점과 특성을 모르면 잘못된 코딩을 하거나 실수하는 경우가 많습니다. 통신은 외부 업체와 협업하거나 장비를 이용해야 해서 어느 한쪽이 엉뚱하게 프로그램을 만들면 간단한 일도 힘든 작업이 될 수 있는데요, tcp/ip와 udp/ip의 차이점과 각 프로토콜을 사용했을 때의 주의해야 할 내용을 알아보겠습니다. 우선 tcp/ip는 연결 지향성이고 udp/ip는 비연결 지향성이라고 합니다. tcp/ip는 스트림 데이터이고 udp/ip는 패킷 단위로 보낸다, 또는 tcp/ip는 데이터 경계가 없지만, udp/ip는 데이터 경계가 있다는 등의 생소한 단어로 어렵게 느껴집니다. 그러나 알고..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 도메인 이름으로 hostent 정보 구하기 함수 gethostbyname()

    C gethostbyname() 도메인 이름으로 hostent 정보 구하기 함수 주어진 호스트 name 에 상응하는 hostent 타입의 구조체를 반환한다. 헤더: netdb.h 형태: struct hostent *gethostbyname(const char *name) 인수: const char *name 호스트 이름이거나 표준 점 표기법의 IPv4 주소, 콜론(그리고 점 표기법도 가능)표기법의 IPv6 반환: NULL == 실패(h_errno 변수에 에러 넘버 대입), 성공 시 hostent 구조체 포인터 hostent 구조 struct hostent { char *h_name; /* Official name of host. */ char **h_aliases; /* Alias list. */ int..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 호스트 이름 구하기 함수 gethostname()

    C gethostname() 호스트 이름 구하기 함수 호스트 이름을 구합니다. 헤더: unistd.h 형태: int gethostname(char *name, size_t len) 인수: char *name 이름을 받을 문자열 버퍼 size_t len 문자열 버퍼 크기 반환: 0 == 호스트 이름 구하기 성공 -1 == 실패, errno는적당한 값으로 설정된다. C언어 gethostname() 함수 예제 #include #include #include #include #include #include #include #include int main( void) { char host_name[80]; struct hostent *host_entry; int ndx; if ( 0 != gethostname( ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 소켓으로부터 자료 수신 함수 recvfrom()

    C recvfrom() 소켓으로부터 자료 수신 함수 recvfrom() 함수는 UDP/IP 통신에서 소켓으로부터 데이터를 수신합니다. 헤더: sys/types.h, sys/socket.h 형태: int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen) 인수: int s 소켓 디스크립터 void *buf 자료 수신을 위한 버퍼 포인터 size_t len 버퍼의 바이트 단위 길이 int flags 수신을 위한 옵션 sockaddr *to 전송한 곳의 주소 정보 socklen_t tolen 전송한 주소 정보의 크기 반환: -1 == 실패, -1 이외는 실제 수신한 바이트 수 flags 옵션 상세..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 소켓으로 데이터를 전송 함수 sendto()

    C함수 소켓으로 데이터를 전송 sendto() sentto() 함수는 UDP/IP 통신에서 소켓으로 데이터를 전송합니다. 헤더: sys/types.h, sys/socket.h 형태: int sendto(int s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen) 인수: int s 소켓 디스크립터 void *msg 전송할 데이터 size_t len 데이터의 바이트 단위 길이 int flags 전송을 위한 옵션 sockaddr *to 목적지 주소 정보 socklen_t tolen 목적지 주소 정보의 크기 반환: -1 == 실패, -1 이외는 실제 전송한 바이트 수 flags 옵션 상세 설명 flags 설명 ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 소켓으로부터 자료 수신 함수 recv()

    C recv() 소켓으로부터 자료 수신 함수 recv() 함수는 소켓으로부터 데이터를 수신합니다.. 헤더: sys/types.h, sys/socket.h 형태: int recv(intsockfd, void *buff, size_t len, int flags) 인수: int sockfd 소켓 디스크립터 void *buff 수신할 버퍼 포인터 size_t len 버퍼의 바이트 단위 길이 int flags 아래와 같은 옵션을 사용할 수 있습니다. flags 설명 MSG_DONTWAIT 수신 데이터가 없다면 기다리지 않고 -1을 반환하면서 바로 복귀 MSG_NOSIGNAL 상대방과 연결이 끊겼을 때, SIGPIPE 시그널을 받지 않도록 합니다. 반환: -1 == 실패, -1 이외 실l제 수신한 바이트 수 인수 ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 소켓으로 데이터 전송 함수 send()

    C send() 소켓으로 데이터 전송 함수 send() 함수는 연결된 서버나 클라이언트로 데이터를 전송합니다. 헤더: sys/types.h, sys/socket.h 형태: int send(intsockfd , const void *msg, size_t len, int flags) 인수: int sockfd 소켓 디스크립터 const void *msg 전송할 데이터 size_t len 데이터의 바이트 단위 길이 int flags 아래와 같은 옵션을 사용할 수 있습니다. flags 설명 MSG_DONTWAIT 전송할 준비가 전에 대기 상태가 필요하다면 기다리지 않고 -1을 반환하면서 복귀 MSG_NOSIGNAL 상대방과 연결이 끊겼을 때, SIGPIPE 시그널을 받지 않도록 합니다. 반환: -1 == 실패,..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 클라이언트 접속 요청 수락 함수 accept()

    C accept() 클라이언트 접속 요청 수락 함수 inet_addr() 함수는 숫자와 점으로 이루어진 IP 문자열을 long형의 숫자 IP 주소로 바꾸어 줍니다. struct sockaddr_in 에서 .sin_addr.s_add 값을 long형의 숫자 IP값을 넣어 주어야 하는데 이 때 사용됩니다. 헤더: sys/types.h, sys/socket.h 형태: int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) 인수: int sockfd 소켓 디스크립터 struct sockaddr *serv_addr 서버 주소 정보에 대한 포인터 socklen_t addrlen struct sockaddr *serv_addr 포인터가 가르키는 구조체의 ..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 서버로 접속 요청 함수 connect()

    C connect() 서버로 접속 요청 함수 inet_addr() 함수는 숫자와 점으로 이루어진 IP 문자열을 long형의 숫자 IP 주소로 바꾸어 줍니다. struct sockaddr_in 에서 .sin_addr.s_add 값을 long형의 숫자 IP값을 넣어 주어야 하는데 이 때 사용됩니다. 헤더: sys/types.h, sys/socket.h 형태: int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen) 인수: int sockfd 소켓 디스크립터 struct sockaddr *serv_addr 서버 주소 정보에 대한 포인터 socklen_t addrlen struct sockaddr *serv_addr 포인터가 가르키..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 클라이언트 접속 요청을 받을 수 있도록 설정 함수 listen()

    C listen() 클라이언트 접속 요청을 받을 수 있도록 설정 함수 inet_addr() 함수는 숫자와 점으로 이루어진 IP 문자열을 long형의 숫자 IP 주소로 바꾸어 줍니다. struct sockaddr_in 에서 .sin_addr.s_add 값을 long형의 숫자 IP값을 넣어 주어야 하는데 이 때 사용됩니다. 헤더: sys/types.h, sys/socket.h 형태: int socket(int domain, int type, int protocol) 인수: int domain 인터넷을 통해 통신할 지, 같은 시스템 내에서 프로세스 끼리 통신할 지의 여부를 설정합니다. int type 인터넷을 통해 통신할 지, 같은 시스템 내에서 프로세스 끼리 통신할 지의 여부를 설정합니다. int proto..
  • thumbnail
    컴퓨터/프로그래밍

    C언어 IP 문자열에서 long 형 숫자 IP주소 구하기 함수 inet_addr()

    C inet_addr() IP 문자열에서 long 형 숫자 IP주소 구하기 함수 inet_addr() 함수는 숫자와 점으로 이루어진 IP 문자열을 long형의 숫자 IP 주소로 바꾸어 줍니다. struct sockaddr_in 에서 .sin_addr.s_add 값을 long형의 숫자 IP값을 넣어 주어야 하는데 이 때 사용됩니다. 헤더: sys/types.h, sys/socket.h 형태: unsigned long int inet_addr(const char *cp) 인수: const char *cp 숫자와 점으로 이루어진 IP 문자열 반환: -1 == 실패, -1 이외 long형의 IP 주소 TCP/IP 통신 함수 사용 순서 TCP/IP 예제 소개 TCP/IP 예제를 서버와 클라이언트로 나누어서 설명을..
    최근글
    이모티콘창 닫기
    울음
    안녕
    감사해요
    당황
    피폐

    이모티콘을 클릭하면 댓글창에 입력됩니다.