TCP/IP网络编程笔记-ch4.基于TCP的服务器端 客户端

函数

进入等待连接请求状态

#include<sys/socket.h>
@param sock:希望进入等待连接请求状态的套接字文件描述符,传递的描述符套接字参数成为服务器端套接字(监听套接字)
@parmam backlog:连接请求等待队列(Queue)的长度,若为5,则队列长度为5,表示最多使5个连接请求进入队列
int listen(int sock,int backlog)
//成功返回0,失败返回-1

受理客户端连接请求

#include<sys/socket.h>
@param sock:服务器套接字的文件描述符
@param addr:保存发起连接请求的客户端地址信息的变量地址值,调用函数后向传递来的地址变量参数填充客户端地址信息
@param addrlen:第二个参数addr结构体的长度,是存有长度的遍历地址。函数低完成后,该变量被填入客户端地址长度。
int accept(int sock,struct sockaddr*addr,socklen_t*addrlen);
//成功返回创建的套接字文件描述符,失败返回-1

客户端请求连接

#include<sys/socket.h>
int connect(int sock,struct sockaddr *servaddr,socklen_t addrlen);
//成功返回0,失败返回-1

TCP

TCP是Transmission Control Protocol(传输控制协议)的简写,意为"对数据传输过程的控制"。

链路层负责在物理链接层面完成数据的传输。
IP层解决数据传输中的路径选择问题,只需照此路径传输数据。
TCP和UDP层以IP层提供的路径信息为基础完成实际的数据传输,故该层又称传输层(Transport)。
TCP可保证可靠的数据传输,它发送数据时以IP层为基础。
应用层,上述内容是套接字通信过程中自动处理,应用层给出的工具即为套接字。

TCP服务器端的默认函数调用顺序:

socket():创建套接字
 
 bind():分配套接字地址
 
 listen():等待连接请求状态
 
 accept():允许连接
 
 read()、write():数据交换
 
 close():断开连接

TCP客户端的默认函数调用顺序

socket():创建套接字

connect():请求连接

read() write():交换数据

close():断开连接

基于TCP的服务器端/客户端函数调用关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fcL7y9cA-1641994083198)(https://note.youdao.com/yws/res/a/WEBRESOURCE506ec63c856e64728759f9985a4a29da)]

实例

必须退出一个客户端才能使用下一个客户端进行连接,即同一时刻服务器只为一个客户端服务。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C4CsJVkL-1641994083199)(https://note.youdao.com/yws/res/d/WEBRESOURCEd7eb6a3e942996a08993f8b779c4287d)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值