tcp中accept()的理解

源码

参数理解

NAME
       accept, accept4 - accept a connection on a socket

SYNOPSIS
       #include <sys/types.h>          /* See NOTES */
       #include <sys/socket.h>

       int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

       #define _GNU_SOURCE             /* See feature_test_macros(7) */
       #include <sys/socket.h>

       int accept4(int sockfd, struct sockaddr *addr,
                   socklen_t *addrlen, int flags);
int sockfd

服务端的曾经绑定的套接字描述符

struct sockaddr *addr, socklen_t *addrlen

包含客户端的ip,端口号,(客户端的属性)

返回值

RETURN VALUE
       On  success,  these  system calls return a nonnegative integer that is a descriptor for the
       accepted socket.  On error, -1 is returned, and errno is set appropriately.

返回值是一个文件描述符

为什么要用两个套接字??

情景解答:

在一个饭店中,有拉客的,有服务员,张三过去吃饭时,

拉客的先会把张三拉进餐厅,服务员一号就会出现服务张三

李四过来后,拉客的又会吧李四拉进餐厅,服务员二号就会出现

在这个过程中,为什么要用多个人呢?? ----->>> 因为要提高效率

在tcp中,也用两个套接字,

后面的两个参数                                                        就是                来吃饭的人(客户端

返回的套接字描述符                                                     就是                                          服务员

参数的套接字描述符(已经处于监听状态的套接字)   就是                                                  拉客的

注意

我们一般将拉客的套接字,既就是不变的,称为   listensocketfd

他们整体的作用是为了提高效率!!!

所以accept()的目的是为了获取链接的(客户端)

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值