■ Contents
viii
Connecting UDP Sockets ������������������������������������������������������������������������������������������������������������������������������������� 28
Request IDs: A Good Idea ������������������������������������������������������������������������������������������������������������������������������������� 29
Binding to Interfaces �������������������������������������������������������������������������������������������������������������������30
UDP Fragmentation ���������������������������������������������������������������������������������������������������������������������32
Socket Options ����������������������������������������������������������������������������������������������������������������������������33
Broadcast ������������������������������������������������������������������������������������������������������������������������������������ 34
When to Use UDP ������������������������������������������������������������������������������������������������������������������������������������������������� 36
Summary ������������������������������������������������������������������������������������������������������������������������������������� 36
■ Chapter 3: TCP �����������������������������������������������������������������������������������������������������������������39
How TCP Works ���������������������������������������������������������������������������������������������������������������������������39
When to Use TCP �������������������������������������������������������������������������������������������������������������������������40
What TCP Sockets Mean �������������������������������������������������������������������������������������������������������������41
A Simple TCP Client and Server ��������������������������������������������������������������������������������������������������42
One Socket per Conversation ������������������������������������������������������������������������������������������������������������������������������ 45
Address Already in Use ���������������������������������������������������������������������������������������������������������������������������������������� 46
Binding to Interfaces �������������������������������������������������������������������������������������������������������������������47
Deadlock ������������������������������������������������������������������������������������������������������������������������������������� 48
Closed Connections, Half-Open Connections ������������������������������������������������������������������������������53
Using TCP Streams Like Files ������������������������������������������������������������������������������������������������������54
Summary ������������������������������������������������������������������������������������������������������������������������������������� 54
■ Chapter 4: Socket Names and DNS ����������������������������������������������������������������������������������57
Hostnames and Sockets ��������������������������������������������������������������������������������������������������������������57
Five Socket Coordinates �������������������������������������������������������������������������������������������������������������������������������������� 58
IPv6 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������� 59
Modern Address Resolution ��������������������������������������������������������������������������������������������������������60
Using getaddrinfo( ) to Bind Your Server to a Port ����������������������������������������������������������������������������������������������� 61
Using getaddrinfo( ) to Connect to a Service ������������������������������������������������������������������������������������������������������� 62
Asking getaddrinfo( ) for a Canonical Hostname �������������������������������������������������������������������������������������������������� 63