前言:
本章讲解TCP 客服端/服务端程序所涉及到的接口;
讲解大量客户端连接到同一服务器上的并发技术--fork
1- 服务端/客户端程序常用接口
1.1- 客户端接口
1.1.1- socket
注意:并非所有的协议族和套接字类型组合都有效;我们只是指定了协议族和套接字类型,并没有指定本定协议地址或远程协议地址
1.1.2- connect
如果是TCP套接字,connect将触发三次握手,只有连接建立成功或失败才返回。
1.2- 服务端接口
1.2.1- socket 同客户端
1.2.2- bind
用于将本地协议地址赋予套接字
对于IPv4可以油INADDR_ANY来指定
1.2.3- listen
完成两件事:
关于backlog是什么,书中没有说明白,只提到:
关于backlog设置多大,书中建议使用可动态修改方式:
1.2.4- accept
1.3- 其他
getsockname,getperrname参考帖子:
getsockname函数与getpeername函数的使用_东方吹雪的专栏-CSDN博客_getpeername
2- 多客户端连接到同一服务端的并发技术
2.1- fork
参考《UNIX环境高级编程》相关章节
2.2- 并发服务示例
我们通常系统服务端不要被一个客户端长期占有,希望一个服务端可以接收导量客户的请求并处理。
书中给出常规方式是:服务端和客户端建立连接后,fork子进程处理客服端请求,父进程继续监听下一个请求的客户端。
重点理解下,为何父进程accept后,要关闭服务端的已连接套接字。详细参考P114-116