BIND
Section: 리눅스 프로그래머 매뉴얼 (2)
Updated: 1998년 10월 3일
Index
Return to Main Contents
이름
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
바이트이다.
전통적으로, 이것은 lq이름을 소켓에 할당하기rq 라고 불리어진다.
소켓이
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일
Index
- 이름
-
- 사용법
-
- 설명
-
- 주의
-
- 반환값
-
- 에러
-
- 버그
-
- 호환
-
- 주의
-
- 관련 항목
-
- 역자
-
This document was created by
man2html,
using the manual pages.
Time: 08:07:00 GMT, March 25, 2004