Linux服务器 - Socket编程函数_accept函数
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函数相关推荐
- LINUX下Socket编程 函数格式详解
你需要了解的一些系统调用: socket() bind() connect() listen() accept() send() recv() sendto() recvfrom() close() ...
- linux下socket编程读写函数
linux下socket编程,实现服务器与客户端的通信之后,在同一个虚拟机上,打开两个shell,一个运行服务器程序,一个运行客户端程序,课相互发送数据. 如果使用的是recv接收函数,当关闭客户端或 ...
- asp.core api 通过socket和服务器通信发送udp_详解Linux的SOCKET编程
文章来自于 https://www.zhangshengrong.com/p/9Oabd95XdK/ PHP进阶学习交流QQ群:983229225 本篇文章对Linux的SOCKET编程进行了详细解释 ...
- socket编程流程及函数详解
socket编程流程及函数详解-服务器端 一.创建socket 二.命名socket 2.1通用的socket地址结构体 2.2专用socket地址 三.监听socket 四.接受连接 五.总结 一. ...
- SOCKET编程中,select()函数的作用
SOCKET编程中,select()函数的作用Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect.accep ...
- Linux之shell编程篇-----Shell 函数和Shell 输入/输出重定向
最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程 废话不多说,请看正文! Shell 函数 1. 自定义函数 linux she ...
- Linux下Socket编程
Linux下Socket编程 网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符.Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的S ...
- Linux的SOCKET编程 简单演示
转载:http://blog.csdn.net/hguisu/article/details/7445768/ Linux的SOCKET编程详解 1. 网络中进程之间如何通信 进 程通信的概念最初来源 ...
- Linux 服务器高级编程ET LT代码
linux 服务器高级编程ET LT代码 #include<sys/types.h> #include<sys/socket.h> #include<netinet/in ...
最新文章
- php 随机调用文章,zblog PHP调用热门文章、随机文章和热评文章代码
- 2021年软考考试时间公布
- Python可变数据类型高效编程
- 【转载保存】java操作HDFS
- 用ikvm 来把java类库转换成_net类库,IKVM.NET
- sql查询初学者指南_适用于初学者SQL Server查询优化技巧与实际示例
- 使用键盘操作将桌面计算机图标隐藏,windows7系统中怎么隐藏桌面图标提高工作效率保持桌面整洁...
- OpenFileDiaog.Filter的使用
- srt字幕怎么导入视频 (视频字幕合并教程)
- thinkadmin下拉框实现默认选中
- 转:怎么判断自己在不在一家好公司?
- LED通信的ID识别报告
- 2021日照市地区高考成绩排名查询,日照高中高考成绩排名,2021年日照各高中高考成绩排行榜...
- 机器学习常用算法原理及优缺点
- LED格栅灯市场现状及未来发展趋势分析
- Towards Evaluating the Robustness of Neural Networks
- 四元数为什么没有万向节死锁问题
- 泛目录程序上排名的核心知识
- 微信小程序、流应用、原生应用app、轻应用
- 用html布局怎么调试,网页规划 CSS布局调试的有用办法