Rechercher une page de manuel
bind
Langue: ko
Version: 1998년 10월 3일 (fedora - 25/11/07)
Section: 2 (Appels système)
이름
bind - 소켓에 이름을 묶는다.사용법
#include <sys/types.h>#include <sys/socket.h>
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
설명
bind 는 소켓 sockfd 와 로컬 주소 my_addr를 준다. my_addr 는 long 형 addrlen 바이트이다. 전통적으로, 이것은 "이름을 소켓에 할당하기" 라고 불리어진다. 소켓이 socket(2)으로 생성되었을때, 그것은 이름 공간(address family)에 존재하지만 할당된 이름을 가지고 있는것은 아니다.SOCK_STREAM 소켓이 연결들을 받기 전에 bind 를 사용하여 로컬 주소를 할당하는 것이 보통 필수적이다. accept(2)를 참조해라).
주의
이름 묶기시 사용되는 규칙들은 주소 가족(address families)들마다 다르다. 세부 사항을 위해서 Section 7에 있는 메뉴얼을 참조해라. AF_INET 를 위해서는 ip(7)를, AF_UNIX 를 위해서는 unix(7)를, AF_APPLETALK 를 위해서는 ddp(7)를, AF_PACKET 를 위해서는 packet(7)를, AF_X25 를 위해서는 x25(7)를 그리고 AF_NETLINK 를 위해서는 netlink(7)를 참고해라.반환값
성공시, 0이 반환된다. 에러시, -1이 반환되며, errno 는 적당한 값으로 설정된다.에러
- EBADF
- sockfd 가 유효한 기술자가 아니다.
- EINVAL
- 소켓가 이미 묶여져 있다. 이것은 앞으로 바뀔것이다:세부 사항을 볼려면 linux/unix/sock.c 를 참고해라.
- EACCES
- 주소가 보호되어 있으며, 사용자는 슈퍼 유저가 아니다.
- ENOTSOCK
- 인자가 소켓이 아니라 파일을 위한 기술자이다.
다음 에러들은 UNIX 도메인 (AF_UNIX)소켓들을 위한 것들이다.:
- EINVAL
- addrlen 가 잘못되거나, 소켓이 AF_UNIX 가족이 아니다.
- EROFS
- 소켓 아이노드가 읽기-전용 파일 시스템에 있다.
- EFAULT
- my_addr 가 사용자가 접근할수 있는 조소 공간외를 가리키고 있다.
- ENAMETOOLONG
- my_addr 가 너무 길다.
- ENOENT
- 파일이 존재하지 않는다.
- ENOMEM
- 이용할수 있는 커널 메모리가 충분하지 않다.
- ENOTDIR
- 경로 접두사 요소가 디렉토리가 아니다.
- EACCES
- 경로 접두사 요소에 대한 검색 허가권이 거부되었다.
- ELOOP
- 너무 많은 상징 연결들을 my_addr시에 만났다.
버그
투명한 프록시 옵션들은 기술되지 않았다.호환
SVr4, 4.4BSD ( bind 함수는 BSD4.2에서 처음 나타났다.) SVr4는 추가적으로 EADDRNOTAVAIL, EADDRINUSE를,그리고 일반적 에러 조건들인 ENOSR 를, 그리고 Unix-도메인 에러 조건들인 EIO, EISDIR 그리고 EROFS 를 문서화 했다.주의
bind 의 3번째 인자는 실제로 int이다.(그리고 이것은 BSD 4.* 와 libc4, libc5가 가지고 있는 것이다.) 몇몇 POSIX 들은 현재의 socklen_t 때문에 약간 혼란스럽다. 표준은 아직 채택되지 않았지만, glibc2는 이미 그것을 따르고 있고 또한 socklen_t를 가지고 있다. accept(2)를 참고해라.관련 항목
accept(2), connect(2), listen(2), socket(2), getsockname(2), ip(7), socket(7)역자
정강훈 <skyeyes@soback.kornet.net>, 2000년 7월 2일Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre