Beej的网络编程指南–使用Internet Sockets

发布时间:2009/05/13      类别:网络 | 所属专题:

原文:http://www.beej.us/guide/bgnet/
翻译:学与思linux编程网

Beej’s Guide to Network Programming
Using Internet Sockets

Brian “Beej Jorgensen” Hall
beej@beej.us
Version 3.0.13
March 23, 2009
Copyright © 2009 Brian “Beej Jorgensen” Hall

Hello,大家好,这是我写的轻量级的socket编程指南,希望大家喜欢。Sockets API源自于BSD操作系统,目前已经移植到了很多操作系统上,包括Unix, Linux, 甚至Windows.

遗憾的是,要想全面掌握这些Socket API并非一朝一夕之事,但只要您熟悉C/C++,那么本指南将帮助您尽可能快尽可能轻松地进入网络编程领域。

目录

1. 简介

1.1. 适合哪些人阅读
1.2. 编程平台与编译器
1.3. 本指南的官方网站以及在售图书
1.4. Solaris/SunOS 程序员注意事项
1.5. Windows 程序员注意事项
1.6. 用Email联系我吧
1.7. 本指南镜像
1.8. 翻译指南
1.9. 版权申明

2. socket是什么?

2.1. 两种类型的Internet Sockets
2.2. 网络基础理论

3. IP地址和数据结构

3.1. IP地址, 第4版和第6版
3.2. 字节序
3.3. 数据结构
3.4. IP地址, 优雅的转换

4. 从IPv4 到 IPv6

5. 系统调用

5.1. getaddrinfo()—正式开始之前!
5.2. socket()—获取文件描述符!
5.3. bind()—我要监听哪个端口?
5.4. connect()—喂,我想跟你聊聊天!
5.5. listen()—别人可以找我吗?
5.6. accept()—”欢迎光临”
5.7. send() and recv()—开始聊天吧!
5.8. sendto() and recvfrom()—开始聊天吧, DGRAM-模式
5.9. close() and shutdown()—再见!
5.10. getpeername()—你是谁?
5.11. gethostname()—我是谁?

6. 客户端-服务器 背景知识

6.1. 一个简单的Stream Server
6.2. 一个简单的Stream Client
6.3. 数据报Sockets

7. 高级知识

7.1. 阻塞
7.2. select()—同步I/O转接
7.3. send()函数能一次发送完数据吗
7.4. 怎么打包要发送的数据
7.5. 数据封装层级
7.6. 广播包—Hello, World!

8. 常见问题

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. 更多参考文献

10.1. 书籍
10.2. 相关网站
10.3. RFCs

发表评论