摘要:对于服务器编程中最重要的一步等待并接受客户的连接,那么这一步在编程中如何完成,accept函数就是完成这一步的。它从内核中取出已经建立的客户连接,然后把这个已经建立的连接返回给用户程序,此时用户程序就可以与自己的客户进行点到点的通信了。

accept函数等待并接受客户请求:

#include<sys/socket.h>
int accept(int sockfd, struct sockaddr* addr, socklen_t* len)
返回:非负描述字——成功, -1——失败

accept默认会阻塞进程,直到有一个客户连接建立后返回,它返回的是一个新可用的套接字,这个套接字是连接套接字。此时我们需要区分两种套接字,一种套接字正如accept的参数sockfd,它是监听套接字,在调用listen函数之后,一个套接字会从主动连接的套接字变身为一个监听套接字;而accept返回是一个连接套接字,它代表着一个网络已经存在的点点连接。自然要问的是:为什么要有两种套接字?原因很简单,如果使用一个描述字的话,那么它的功能太多,使得使用很不直观,同时在内核确实产生了一个这样的新的描述字。

参数sockfd 
参数sockfd就是上面解释中的监听套接字,这个套接字用来监听一个端口,当有一个客户与服务器连接时,它使用这个一个端口号,而此时这个端口号正与这个套接字关联。当然客户不知道套接字这些细节,它只知道一个地址和一个端口号。 
参数addr 
这是一个结果参数,它用来接受一个返回值,这返回值指定客户端的地址,当然这个地址是通过某个地址结构来描述的,用户应该知道这一个什么样的地址结构。如果对客户的地址不感兴趣,那么可以把这个值设置为NULL。 
参数len 
如同大家所认为的,它也是结果的参数,用来接受上述addr的结构的大小的,它指明addr结构所占有的字节个数。同样的,它也可以被设置为NULL。

如果accept成功返回,则服务器与客户已经正确建立连接了,此时服务器通过accept返回的套接字来完成与客户的通信。

tcp accept函数相关推荐

  1. accept函数与TCP三次握手

    ❤️强烈推荐人工智能学习网站❤️ accept函数和TCP三次握手有没有关系?有什么关系?一段代码让你从此不在疑惑. 服务端: #include <unistd.h> #include & ...

  2. tcp/ip网络编程--accept()函数返回的套接字

    tcp/ip网络编程–accept()函数返回的套接字 套接字:1)套接字是对网络中不同主机的应用进程之间进行双向通信的端点的抽象:一个套接字就是网络进程通信的一端.[1] 2)套接字是用来与另一个进 ...

  3. accept函数(TCP)

    accept函数(TCP) #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int accept( ...

  4. TCP/IP编程之accept函数详解

    accept函数由TCP服务器调用,用于从已完成连接队列返回下一个已完成连接.如果已完成连接队列为空,那么进程被投入睡眠(假定套接字默为默认的阻塞方式) 函数原型: ACCEPT(2) Linux P ...

  5. TCP的listen和accept函数

    int listen(int sockfd, int backlog); 完成两件事情: 1.将未连接的套接口转换成被动套接口,指示内核应接收指向此套 接的 连接请求.       导致套接口从CLO ...

  6. 几个经典的TCP通信函数

    前言 在TCP通信中要使用到几个非常经典的函数( 点这里参考一个关于它们作用的形象比方 ),本文将对这几个函数进行一个简短的使用说明. socket函数 函数作用:创建一个网际字节流套接字 包含头文件 ...

  7. listen()与accept()函数的区别

    listen函数 摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器,并指定 ...

  8. accept函数_基础套接字函数入门1

    想不想自己写一个简单的QQ?想不想自己写一个聊天室?想不想知道2000年的人是如何上网的?本节讲解一些基础的网络函数,带你看看,编写一个完整的TCP客户端.服务端需要掌握哪些函数?之后,我们要开发自己 ...

  9. C语言socket accept()函数(提取出所监听套接字的等待连接队列中第一个连接请求,创建一个新的套接字,并返回指向该套接字的文件描述符)

    文章目录 名称 使用格式 功能参数描述 参数 sockfd addr addrlen 返回值 示例 man 2 文档中的accept解释 错误处理 名称 accept() 接收一个套接字中已建立的连接 ...

最新文章

  1. linux 中文输入法 xshall,Centos6.7下安装ibus中文输入法
  2. Ubuntu Linux配置Nginx+MySQL+PHP+phpMyAdmin详细步骤
  3. 购买使用vps建站(3)
  4. 【牛客网多校】19-7-25-H题 Magic Line
  5. 关于压缩工具 7z(7-zip) 的选项 -u(更新压缩档案中的文件)的解读
  6. html5邀请函在线制作,很炫的html5年会邀请函
  7. ldr和adr的区别
  8. php get_magic_quotes_gpc()
  9. 学会阅读英文计算机原著
  10. linux rhce教程,RHCE之路_Linux教程_Linux公社-Linux系统门户网站
  11. 各种LINUX资源链接
  12. ps如何把自己的图与样机结合_样机在ps里面怎么用|ps怎么把图片放在书本样机图中...
  13. PHPstuday(集成环境)的下载与安装。
  14. palantir_Palantir Technologies有望成为今年最大的IPO
  15. 物流(Logistics)的概念
  16. 蓝牙耳机单次续航排名,续航最久的蓝牙耳机推荐
  17. INSERT INTO SET
  18. java的 finalize() 方法
  19. java方法注释都英文_JDK源码中的英文注释翻译(Class)
  20. 筹码集中度的判断方法

热门文章

  1. BGP实验配置——IBGP、EBGP、路由策略、路由聚合、链路备份
  2. Java面试题库,北京java工程师招聘
  3. 今天也要加油鸭!!!!!
  4. Android声音控制
  5. Axure RP8-实战案例_总目录
  6. 算法的力量(转李开复)
  7. 【超树+蝶形】基于的超树结构和蝶形运算单元的无线传感器网络路由算法FPGA实现详解
  8. MySQL——约束(constraint)详解
  9. JS读取和导出Excel示例(基于js-xlsx)
  10. ofdm信号调制matlab,OFDM信号 [matlab描述]