BSD Sockets Interface Programmer's Guide

6
Contents
Example Using Internet Stream Sockets . . . . . . . . . . . . . . . . . . . . . . . . 48
3. Advanced Topics for Stream Sockets
Socket Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Getting and Setting Socket Options. . . . . . . . . . . . . . . . . . . . . . . . . . . 62
SO_REUSEADDR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
SO_KEEPALIVE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
SO_DONTROUTE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
SO_SNDBUF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
SO_RCVBUF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
SO_LINGER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
SO_USELOOPBACK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
SO_OOBINLINE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
SO_SNDLOWAT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
SO_RCVLOWAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
SO_SNDTIMEO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
SO_RCVTIMEO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
SO_TYPE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
SO_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
SO_BROADCAST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
SO_REUSEPORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Synchronous I/O Multiplexing with Select. . . . . . . . . . . . . . . . . . . . . . . 72
Sending and Receiving Data Asynchronously . . . . . . . . . . . . . . . . . . . . 75
Nonblocking I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Using Shutdown. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
When to Shut Down a Socket. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Using Read and Write to Make Stream Sockets Transparent . . . . . . . 80
Sending and Receiving Out-of-band Data. . . . . . . . . . . . . . . . . . . . . . . . 81