Socket编程函数

accept函数
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
sockdf:
socket文件描述符
addr:
传出参数,返回链接客户端地址信息,含IP地址和端口号
addrlen:
传入传出参数(值-结果),传入sizeof(addr)大小,函数返回时返回真正接收到地址结构体的大小
返回值
成功返回一个新的socket文件描述符,用于和客户端通信,失败返回-1,设置errno

三次握手完成后,服务器调用accept()接受连接,如果服务器调用accept()时还没有客户端的连接请求,就阻塞等待直到有客户端连接上来。addr是一个传出参数,accept()返回时传出客户端的地址和端口号。addrlen参数是一个传入传出参数(value-result argument),传入的是调用者提供的缓冲区addr的长度以避免缓冲区溢出问题,传出的是客户端地址结构体的实际长度(有可能没有占满调用者提供的缓冲区)。如果给addr参数传NULL,表示不关心客户端的地址。
我们的服务器程序结构是这样的:

while (1) {cliaddr_len = sizeof(cliaddr);connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &cliaddr_len);n = read(connfd, buf, MAXLINE);......close(connfd);
}

整个是一个while死循环,每次循环处理一个客户端连接。由于cliaddr_len是传入传出参数,每次调用accept()之前应该重新赋初值。accept()的参数listenfd是先前的监听文件描述符,而accept()的返回值是另外一个文件描述符connfd,之后与客户端之间就通过这个connfd通讯,最后关闭connfd断开连接,而不关闭listenfd,再次回到循环开头listenfd仍然用作accept的参数。accept()成功返回一个文件描述符,出错返回-1。

具体

(略)

结语:

时间: 2020-07-24

Linux服务器 - Socket编程函数_accept函数相关推荐

  1. LINUX下Socket编程 函数格式详解

    你需要了解的一些系统调用: socket() bind() connect() listen() accept() send() recv() sendto() recvfrom() close() ...

  2. linux下socket编程读写函数

    linux下socket编程,实现服务器与客户端的通信之后,在同一个虚拟机上,打开两个shell,一个运行服务器程序,一个运行客户端程序,课相互发送数据. 如果使用的是recv接收函数,当关闭客户端或 ...

  3. asp.core api 通过socket和服务器通信发送udp_详解Linux的SOCKET编程

    文章来自于 https://www.zhangshengrong.com/p/9Oabd95XdK/ PHP进阶学习交流QQ群:983229225 本篇文章对Linux的SOCKET编程进行了详细解释 ...

  4. socket编程流程及函数详解

    socket编程流程及函数详解-服务器端 一.创建socket 二.命名socket 2.1通用的socket地址结构体 2.2专用socket地址 三.监听socket 四.接受连接 五.总结 一. ...

  5. SOCKET编程中,select()函数的作用

    SOCKET编程中,select()函数的作用Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect.accep ...

  6. Linux之shell编程篇-----Shell 函数和Shell 输入/输出重定向

    ​ 最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程 废话不多说,请看正文! ​ Shell 函数 1. 自定义函数 linux she ...

  7. Linux下Socket编程

    Linux下Socket编程    网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符.Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的S ...

  8. Linux的SOCKET编程 简单演示

    转载:http://blog.csdn.net/hguisu/article/details/7445768/ Linux的SOCKET编程详解 1. 网络中进程之间如何通信 进 程通信的概念最初来源 ...

  9. Linux 服务器高级编程ET LT代码

    linux 服务器高级编程ET LT代码 #include<sys/types.h> #include<sys/socket.h> #include<netinet/in ...

最新文章

  1. php 随机调用文章,zblog PHP调用热门文章、随机文章和热评文章代码
  2. 2021年软考考试时间公布
  3. Python可变数据类型高效编程
  4. 【转载保存】java操作HDFS
  5. 用ikvm 来把java类库转换成_net类库,IKVM.NET
  6. sql查询初学者指南_适用于初学者SQL Server查询优化技巧与实际示例
  7. 使用键盘操作将桌面计算机图标隐藏,windows7系统中怎么隐藏桌面图标提高工作效率保持桌面整洁...
  8. OpenFileDiaog.Filter的使用
  9. srt字幕怎么导入视频 (视频字幕合并教程)
  10. thinkadmin下拉框实现默认选中
  11. 转:怎么判断自己在不在一家好公司?
  12. LED通信的ID识别报告
  13. 2021日照市地区高考成绩排名查询,日照高中高考成绩排名,2021年日照各高中高考成绩排行榜...
  14. 机器学习常用算法原理及优缺点
  15. LED格栅灯市场现状及未来发展趋势分析
  16. Towards Evaluating the Robustness of Neural Networks
  17. 四元数为什么没有万向节死锁问题
  18. 泛目录程序上排名的核心知识
  19. 微信小程序、流应用、原生应用app、轻应用
  20. 用html布局怎么调试,网页规划 CSS布局调试的有用办法

热门文章

  1. 电脑实现web远程连接
  2. 原来用Redis实现查找附近的人这么容易
  3. 【操作系统】Linux Kernel中memcpy的汇编实现 详解(包括必要基础概念等)
  4. 读论文:Segment Anything
  5. 【物联网】1.物联网的基础知识
  6. Win10没有以太网图标如何找回?以太网适配器不见了怎么恢复?
  7. Kafka的数据存储
  8. 【JAVA定时器】四种常见定时器的原理和简单实现
  9. 【回答问题】ChatGPT上线了!推荐30个以上比较好的中文bert系列的模型/压缩模型
  10. 范伟身患癌症 崔永元亲赴鞍山探望捐赠巨款