HP Rp7410 BSD Sockets Interface Programmer's Guide - Page 153

Binding Socket Addresses to UNIX Domain, Datagram Sockets

Page 153 highlights

Using UNIX Domain Datagram Sockets Writing the Server and Client Processes Binding Socket Addresses to UNIX Domain Datagram Sockets After your server process has created a socket, it must call bind to bind a socket address. Until the server socket is bound to an address, other processes have no way to reference it. The server process must bind a specific pathname to its socket. Set up the address structure with a local address before the server makes a call to bind. The bind system call creates the inode file. If the inode file is not deallocated after bound sockets are closed, the names will continue to exist and cause directories to fill up with the unused files. To avoid directories filling up with these unused files, you can remove the files by calling unlink or remove them manually with the rm command. bind and its parameters are described in the following table. Include files: System call: #include #include #include bind(s, addr, addrlen); int s; struct sockaddr_un *addr; int addrlen; Parameter Description of Contents INPUT Value s addr addrlen socket descriptor of local socket socket address length of socket address socket descriptor of socket to be bound pointer to address to be bound to s size of struct sockaddr_un address Function result: 0 if bind is successful, -1 if bind fails. Example: #include #include #include #define SOCKET_PATH "/tmp/myserver" struct sockaddr_un servaddr; ... servaddr.sun_family = AF_UNIX; Chapter 7 153

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196

Chapter 7
153
Using UNIX Domain Datagram Sockets
Writing the Server and Client Processes
Binding Socket Addresses to UNIX Domain
Datagram Sockets
After your server process has created a socket, it must call
bind
to bind a
socket address. Until the server socket is bound to an address, other
processes have no way to reference it.
The server process must bind a specific pathname to its socket. Set up
the address structure with a local address before the server makes a call
to
bind
.
The
bind
system call creates the inode file. If the inode file is not
deallocated after bound sockets are closed, the names will continue to
exist and cause directories to fill up with the unused files. To avoid
directories filling up with these unused files, you can remove the files by
calling
unlink
or remove them manually with the
rm
command.
bind
and its parameters are described in the following table.
Include files:
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
System call:
bind(s, addr, addrlen);
int s;
struct sockaddr_un *addr;
int addrlen;
Function result:
0 if bind is successful, -1 if bind fails.
Example:
#include <sys/type.h>
#include <sys/socket.h>
#include <sys/un.h>
#define
SOCKET_PATH “/tmp/myserver”
struct
sockaddr_un
servaddr;
...
servaddr.sun_family = AF_UNIX;
Parameter
Description of Contents
INPUT Value
s
socket descriptor of local
socket
socket descriptor of
socket to be bound
addr
socket address
pointer to address to be
bound to s
addrlen
length of socket address
size of struct
sockaddr_un address