Chapter 8. Remote Procedure Call . . . . . . . . . . . . . . . . . . . . . . . . . 131
RPC Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
RPC Message Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
RPC Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
RPC Port Mapper Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Programming in RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
RPC Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
RPC Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
rpcgen Protocol Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
List of RPC Programming References . . . . . . . . . . . . . . . . . . . . . . . . 162
Using UNIX Authentication Example . . . . . . . . . . . . . . . . . . . . . . . . . 166
DES Authentication Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Using the Highest Layer of RPC Example . . . . . . . . . . . . . . . . . . . . . . . 170
Using the Intermediate Layer of RPC Example . . . . . . . . . . . . . . . . . . . . . 170
Using the Lowest Layer of RPC Example . . . . . . . . . . . . . . . . . . . . . . . 171
Showing How RPC Passes Arbitrary Data Types Example . . . . . . . . . . . . . . . . . 175
Using Multiple Program Versions Example . . . . . . . . . . . . . . . . . . . . . . . 176
Broadcasting a Remote Procedure Call Example . . . . . . . . . . . . . . . . . . . . 177
Using the select Subroutine Example . . . . . . . . . . . . . . . . . . . . . . . . . 178
rcp Process on TCP Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
RPC Callback Procedures Example . . . . . . . . . . . . . . . . . . . . . . . . . 180
RPC Language ping Program Example . . . . . . . . . . . . . . . . . . . . . . . . 183
Converting Local Procedures into Remote Procedures Example . . . . . . . . . . . . . . . 184
Generating XDR Routines Example . . . . . . . . . . . . . . . . . . . . . . . . . 187
Chapter 9. Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Sockets Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Sockets Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Socket Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Socket Header Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Socket Communication Domains . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Socket Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Socket Types and Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Socket Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Binding Names to Sockets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Socket Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Socket Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Socket Data Transfer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Socket Shutdown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
IP Multicasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
Network Address Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Domain Name Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Socket Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Socketpair Communication Example . . . . . . . . . . . . . . . . . . . . . . . . . 219
Reading Internet Datagrams Example Program . . . . . . . . . . . . . . . . . . . . . 219
Sending Internet Datagrams Example Program . . . . . . . . . . . . . . . . . . . . . 220
Reading UNIX Datagrams Example Program . . . . . . . . . . . . . . . . . . . . . . 221
Sending UNIX Datagrams Example Program . . . . . . . . . . . . . . . . . . . . . . 221
Initiating Internet Stream Connections Example Program . . . . . . . . . . . . . . . . . 222
Accepting Internet Stream Connections Example Program . . . . . . . . . . . . . . . . . 223
Checking for Pending Connections Example Program . . . . . . . . . . . . . . . . . . 224
Initiating UNIX Stream Connections Example Program . . . . . . . . . . . . . . . . . . 225
Accepting UNIX Stream Connections Example Program . . . . . . . . . . . . . . . . . . 226
Sending Data on an ATM Socket PVC Client Example Program . . . . . . . . . . . . . . . 227
Receiving Data on an ATM Socket PVC Server Example Program . . . . . . . . . . . . . . 228
Sending Data on an ATM Socket Rate-Enforced SVC Client Example Program . . . . . . . . . 229
Contents v