2012-11-18 wcdj
Beej's Guide to Network Programming
Using Internet Sockets
Brian "Beej Jorgensen" Hall
beej@beej.us
Version 3.0.15
July 3, 2012
Contents
-
1.
Intro
- 1.1. Audience
- 1.2. Platform and Compiler
- 1.3. Official Homepage and Books For Sale
- 1.4. Note for Solaris/SunOS Programmers
- 1.5. Note for Windows Programmers
- 1.6. Email Policy
- 1.7. Mirroring
- 1.8. Note for Translators
- 1.9. Copyright and Distribution 2. What is a socket?
- 2.1. Two Types of Internet Sockets
- 2.2. Low level Nonsense and Network Theory 3. IP Addresses, struct s, and Data Munging
- 3.1. IP Addresses, versions 4 and 6
- 3.2. Byte Order
- 3.3. struct s
- 3.4. IP Addresses, Part Deux 4. Jumping from IPv4 to IPv6 5. System Calls or Bust
- 5.1. getaddrinfo()—Prepare to launch!
- 5.2. socket()—Get the File Descriptor!
- 5.3. bind()—What port am I on?
- 5.4. connect()—Hey, you!
- 5.5. listen()—Will somebody please callme?
- 5.6. accept()—"Thank you for calling port3490."
- 5.7. send() and recv()—Talk to me,baby!
- 5.8. sendto() andrecvfrom()—Talk to me, DGRAM-style
- 5.9. close() andshutdown()—Get outta my face!
- 5.10. getpeername()—Who are you?
- 5.11. gethostname()—Who am I? 6. Client-Server Background
- 6.1. A Simple Stream Server
- 6.2. A Simple Stream Client
- 6.3. Datagram Sockets 7. Slightly Advanced Techniques
- 7.1. Blocking
- 7.2. select()—Synchronous I/O Multiplexing
- 7.3. Handling Partial send()s
- 7.4. Serialization—How to Pack Data
- 7.5. Son of Data Encapsulation
- 7.6. Broadcast Packets—Hello, World! 8. Common Questions 9. Man Pages
- 9.1. accept()
- 9.2. bind()
- 9.3. connect()
- 9.4. close()
- 9.5. getaddrinfo(), freeaddrinfo(),gai_strerror()
- 9.6. gethostname()
- 9.7. gethostbyname(), gethostbyaddr()
- 9.8. getnameinfo()
- 9.9. getpeername()
- 9.10. errno
- 9.11. fcntl()
- 9.12. htons(), htonl(),ntohs(), ntohl()
- 9.13. inet_ntoa(), inet_aton(),inet_addr
- 9.14. inet_ntop(), inet_pton()
- 9.15. listen()
- 9.16. perror(), strerror()
- 9.17. poll()
- 9.18. recv(), recvfrom()
- 9.19. select()
- 9.20. setsockopt(), getsockopt()
- 9.21. send(), sendto()
- 9.22. shutdown()
- 9.23. socket()
- 9.24. struct sockaddr and pals 10. More References
- 10.1. Books
- 10.2. Web References
- 10.3. RFCs