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

When to Accept a Connection

Page 39 highlights

Using Internet Stream Sockets Writing the Server Process Parameter Contents ls addr socket descriptor of local socket socket address addrlen length of address INPUT Value socket descriptor of server socket pointer to address structure where address will be put pointer to the size of struct sockaddr_in OUTPUT Value unchanged pointer to socket address of client socket that server's new socket is connected to pointer to the actual length of address returned in addr Function result: socket descriptor of new socket if accept is successful, -1 if failure occurs. Example: struct sockaddr_in peeraddr; ... addrlen = sizeof(sockaddr_in); s = accept (ls, &peeraddr, &addrlen); There is no way for the server process to indicate which requests it can accept. It must accept all requests or none. Your server process can keep track of which process a connection request is from by examining the address returned by accept. Once you have this address, you can use gethostbyaddr to get the hostname. You can close down the connection if you do not want the server process to communicate with that particular client host or port. When to Accept a Connection The server process should accept a connection after executing the listen call. Refer to the accept(2) man page for more information on accept. Chapter 2 39

  • 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 2
39
Using Internet Stream Sockets
Writing the Server Process
Function result:
socket descriptor of new socket if accept is successful,
–1 if failure occurs.
Example:
struct sockaddr_in peeraddr;
...
addrlen = sizeof(sockaddr_in);
s = accept (ls, &peeraddr, &addrlen);
There is no way for the server process to indicate which requests it can
accept. It must accept all requests or none. Your server process can keep
track of which process a connection request is from by examining the
address returned by
accept
. Once you have this address, you can use
gethostbyaddr
to get the hostname. You can close down the connection
if you do not want the server process to communicate with that
particular client host or port.
When to Accept a Connection
The server process should accept a connection after executing the
listen
call. Refer to the
accept(2)
man page for more information on
accept
.
Parameter
Contents
INPUT Value
OUTPUT
Value
ls
socket
descriptor of
local socket
socket descriptor of
server socket
unchanged
addr
socket address
pointer to address
structure where
address will be put
pointer to
socket
address of
client socket
that server’s
new socket is
connected to
addrlen
length of
address
pointer to the size
of struct
sockaddr_in
pointer to the
actual length
of address
returned in
addr