TCP客户/服务器模型

本文介绍了TCP的客户/服务器模型,包括TCP三次握手过程、服务器编程步骤和关键函数如socket、bind、listen、accept及connect的使用。通过类比打电话的方式解释了服务器如何等待客户端连接,并讨论了在实际编程中accept的放置位置对程序行为的影响。
摘要由CSDN通过智能技术生成

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");
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值