Linux网络总结之五-TCP连接中的系列函数

这部分我们研究TCP连接建立与关闭过程中各个API函数的作用与特性。
首先我们看TCP过程的图示如下:
 
TCP通信时socket之间的通信,所以首先要在内核空间创建socket描述符,其函数如下 :int socket(int domain, int type, int protocol),其中domain指协议族,type指流服务,protocol指具体的协议。返回值为int型整数,代表socket描述符。接着,将socket描述符与你本机上的一个端口相关联int bind(int sockfd,struct sockaddr *my_addr, int addrlen);其中sockfd是一个socket描述符my_addr是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针;addrlen=sizeof(struct sockaddr)。返回:成功=0;失败=-1,errno=错误号。
Listen: 监听是否有服务请求 ,用于bind()后int listen(int sockfd, int backlog); 
Sockfd是Socket系统调用返回的socket 描述符;backlog指定在请求队列中允许的最大请求数,缺省值为20。返回:成功=0;失败=-1,errno=错误号。
Listen用来监听描述符为sockfd的socket的端口,只有处于内核监听状态的端口客户端才可以发送connect连接。Backlog表示内核监听队列的最大长度。该数值在
/proc/sys/net/ipv4/tcp_max_syn_backlog目录下可以看见。
connect:与远端服务器建立一个TCP连接 (用于客户端)int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); Sockfd是目的客户端的sockt描述符serv_addr是包含目的机IP地址和端口号的指针。返回:成功=0;失败=-1,errno=错误号。
accept函数返回已连接套接字,int accept(int sockfd, void *addr, int *addrlen); 
sockfd是被监听的socket描述符,addr 是指向sockaddr_in变量的指针,存放客户主机的信息 ;addrten 指向值为sizeof(struct sockaddr_in)的整型指针变量。返回:成功返回一个新的socket描述符,来供这个新连接来使用。返回TCP连接的描述符。
在消息的交互过程中,客户端往自己的socket中写数据,服务器往TCP连接描述符里面写。send(int sockfd, const void *buf, size_t len, int flags)与recv(int sockfd, void *buf, size_t len, int flags)是写与读函数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值