소켓에 특성을 부여(정의)한다.
#include <sys/types.h> #include <sys/socket.h> int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
sockfd 는 socket(2) 함수를 통해서 만들어진 소켓지정번호이다. bind 는 이 sockfd 에 my_addr 로 대변되는 특성을 부여한다. my_addr 에는 sockfd 가 통신을 하기 위해서 필요한 정보인 "port", "인터넷주소", "소켓 흐름종류" 등을 포함하고 있다.
성공할경우 0을 실패했을경우에는 -1을 반환하며, 적당한 errno 값을 설정한다.
다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.
sockfd 가 유효한 기술자가 아니다.
주소가 보호되고 있으며, 사용자는 슈퍼유저가 아니다.
sockfd 가 소켓지정자가 아닌 파일지정자이다.
소켓 아이노드가 읽기전용 파일시스템에 있다.
sockfd 가 존재하지 않는다.
#include <sys/time.h> #include <sys/types.h> #include <unistd.h> #include <fcntl.h> #include <stdlib.h> #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main() { int sockfd; int client_sockfd; int client_len; int state; struct sockaddr_in clientaddr, serveraddr, myaddr; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket error : "); exit(0); } bzero(&serveraddr, sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); serveraddr.sin_port = htons(12345); state = bind(sockfd , (struct sockaddr *)&serveraddr, sizeof(serveraddr)); if (state == -1) { perror("bind error : "); exit(0); } state = listen(sockfd, 5); if (state == -1) { perror("listen error : "); exit(0); } client_len = sizeof(clientaddr); client_sockfd = accept(sockfd, (struct sockaddr *)&clientaddr, &client_len); getpeername(client_sockfd, (struct sockaddr *)&myaddr, &client_len); printf("Port : %d\n", myaddr.sin_port); printf("address : %s\n", inet_ntoa(myaddr.sin_addr)); close(client_sockfd); close(sockfd); return 1; }
Copyrights © - Joinc, All Rights Reserved. Inherited From - Yundream Rebranded By - Joonphil
1장. bind(2)
소켓에 특성을 부여(정의)한다.
1.1절. 사용법
1.2절. 설명
sockfd 는 socket(2) 함수를 통해서 만들어진 소켓지정번호이다. bind 는 이 sockfd 에 my_addr 로 대변되는 특성을 부여한다. my_addr 에는 sockfd 가 통신을 하기 위해서 필요한 정보인 "port", "인터넷주소", "소켓 흐름종류" 등을 포함하고 있다.
1.3절. 반환값
성공할경우 0을 실패했을경우에는 -1을 반환하며, 적당한 errno 값을 설정한다.
1.4절. 에러
다양한 원인에 의해서 에러가 발생할수 있으며 아래와 같은 에러 메시지들이 있다.
sockfd 가 유효한 기술자가 아니다.
주소가 보호되고 있으며, 사용자는 슈퍼유저가 아니다.
sockfd 가 소켓지정자가 아닌 파일지정자이다.
소켓 아이노드가 읽기전용 파일시스템에 있다.
sockfd 가 존재하지 않는다.
1.5절. 예제
Recent Posts
Archive Posts
Tags