CS模型:Client /Service模型
过程描述:
类比打电话。
对于服务器,首先创建套接字,socket;之后绑定一个端口,bind;进入监听状态,listen;等到对方打电话,accept;之后一直阻塞等到客户端连接过来。
对于客户端,首先要创建套接字,之后尝试打电话,即connect,一旦拨打通了,即连接上了,开始TCP的三次握手。(详细见下面分析)
建立连接后,客户端,和服务器听过write和read进行数据请求,和数据应答。都是write发,read收。
客户端想关闭,close,然后服务器,read后,也close。
TCP三次握手
回射客户/服务器
重要函数
socket:创建套接字,用于通信。
bind
注意这里的输入参数,通用地址结构。
listen:调用socket和bind函数之后,调用accept之前调用。
listen:是将套接字从主动套接字转化为被动套接字
主动套接字:发起连接 connect
被动套接字:接收连接 accept
对于给定的监听套接字,内核要维护两个队列:
1。 已有客户发出并到达服务器,服务器正在等待完成相应的TCP三路握手过程。
2。 已完成连接的队列。
accept
connect
服务器端:
//if ((conn=accept(listenfd, (struct sockaddr*)&peeraddr, &peerlen)) < 0)//服务端:等待客户端接入.conn对应的是客户端发出来的套接字
//{
// ERR_EXIT("accept");