|
|
1.1 root 1: .TH BIND 2 "27 July 1983"
2: .UC 4
3: .SH NAME
4: bind \- bind a name to a socket
5: .SH SYNOPSIS
6: .nf
7: .ft B
8: #include <sys/types.h>
9: #include <sys/socket.h>
10: #include <sys/un.h> /* for Unix domain only */
11: #include <netinet/in.h> /* for Internet domain only */
12: .PP
13: .ft B
14: bind(s, name, namelen)
15: int s;
16: struct sockaddr *name;
17: int namelen;
18: .fi
19: .SH DESCRIPTION
20: .I Bind
21: assigns a name to an unnamed socket.
22: After being created by the
23: .IR socket (2)
24: system call, a socket
25: exists in a name space (address family)
26: but has no name assigned.
27: .I Bind
28: requests the
29: .IR name
30: be assigned to the socket.
31: Since the system call is applicable to various communication domains,
32: the address formats varies.
33: .PP
34: .I BINDING NAMES TO SOCKETS IN UNIX DOMAIN
35: .PP
36: The system creates a file of socket type in the file system
37: when binding name to a socket. This file must not have existed and
38: and must be deleted by the caller when it is no longer
39: needed (using
40: .IR unlink (2)).
41: The file created
42: is a side-effect of the current implementation,
43: and is not created in future versions
44: of the UNIX ipc domain.
45: .PP
46: The argument
47: .I name
48: points to the following structure in the file <sys/un.h>:
49:
50: .RS
51: .nf
52: struct sockaddr_un {
53: short sun_family;
54: char sun_path[109];
55: };
56: .fi
57: .RE
58:
59: .I Sun_family
60: is set with AF_UNIX, and
61: .I sun_path
62: is set with the socket name. The name is null terminated if it is
63: less than 109 characters.
64: .I Namelen
65: argument must be at most 111 characters.
66:
67: .I Notes
68:
69: The Tahoe C-compiler operator
70: .I sizeof(struct sockaddr_un)
71: returns 112 (instead of 111!) since it always pads all C-structures
72: to make them multiple of long words. As a result, application programmers
73: must specify "sizeof(struct sockaddr_un) -1" as the value of the
74: .I namelen
75: argument when binding in the Unix domain.
76: .PP
77: .I BINDING NAMES TO SOCKETS IN INTERNET DOMAIN
78: .PP
79: The argument
80: .I namelen
81: must be at most 112.
82: The argument
83: .I name
84: points to the following structure in the file <inet/in.h>:
85:
86: .RS
87: .nf
88: struct sockaddr_in {
89: short sin_family;
90: u_short sin_port;
91: struct in_addr sin_addr;
92: char sin_zero[8];
93: };
94:
95: .fi
96: .RE
97: The field
98: .I sin_port
99: must be in Internet byte order.
100: If the field
101: .I sin_addr
102: is left unspecified (NULL value), the system will assign a default
103: address. If the process reads or writes through a socket without
104: binding first, the system will assign that socket a default name.
105: .SH "RETURN VALUE
106: If the bind is successful, a 0 value is returned.
107: A return value of \-1 indicates an error, which is
108: further specified in the global \fIerrno\fP.
109: .SH ERRORS
110: The \fIbind\fP call fails if:
111: .TP 20
112: [EBADF]
113: \fIS\fP is not a valid descriptor.
114: .TP 20
115: [ENOTSOCK]
116: \fIS\fP is not a socket.
117: .TP 20
118: [EADDRNOTAVAIL]
119: The specified address is not available from the local machine.
120: .TP 20
121: [EADDRINUSE]
122: The specified address is already in use.
123: .TP 20
124: [EINVAL]
125: The socket is already bound to an address.
126: .TP 20
127: [EACCESS]
128: The requested address is protected, and the current user
129: has inadequate permission to access it.
130: .TP 20
131: [EFAULT]
132: The \fIname\fP parameter is not in a valid part of the user
133: address space.
134: .SH SEE ALSO
135: connect(2), listen(2), socket(2), getsockname(2).
136: The rules used in name binding vary between communication domains.
137: Consult the manual entries in section 4 for detailed information.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.