Linux套接字通信常用函数-accept
2015-12-25 14:30
387 查看
TCP服务器端依次调用socket()、bind()、listen()之后,就会监听指定的socket地址了。TCP客户端依次调用socket()、connect()之后就想TCP服务器发送了一个连接请求。TCP服务器监听到这个请求之后,就会调用accept()函数取接收请求,这样连接就建立好了。之后就可以开始网络I/O操作了,即类同于普通文件的读写I/O操作。
accept函数的第一个参数为服务器的socket描述字,第二个参数为指向struct sockaddr *的指针,用于返回客户端的协议地址,第三个参数为协议地址的长度。如果accpet成功,那么其返回值是由内核自动生成的一个全新的描述字,代表与返回客户的TCP连接,失败返回-1.
注意:accept的第一个参数为服务器的socket描述字,是服务器开始调用socket()函数生成的,称为监听socket描述字;而accept函数返回的是已连接的socket描述字。一个服务器通常通常仅仅只创建一个监听socket描述字,它在该服务器的生命周期内一直存在。内核为每个由服务器进程接受的客户连接创建了一个已连接socket描述字,当服务器完成了对某个客户的服务,相应的已连接socket描述字就被关闭。
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);//会阻塞在这个函数接受客户端的连接
accept函数的第一个参数为服务器的socket描述字,第二个参数为指向struct sockaddr *的指针,用于返回客户端的协议地址,第三个参数为协议地址的长度。如果accpet成功,那么其返回值是由内核自动生成的一个全新的描述字,代表与返回客户的TCP连接,失败返回-1.
注意:accept的第一个参数为服务器的socket描述字,是服务器开始调用socket()函数生成的,称为监听socket描述字;而accept函数返回的是已连接的socket描述字。一个服务器通常通常仅仅只创建一个监听socket描述字,它在该服务器的生命周期内一直存在。内核为每个由服务器进程接受的客户连接创建了一个已连接socket描述字,当服务器完成了对某个客户的服务,相应的已连接socket描述字就被关闭。
相关文章推荐
- 如何关闭Linux里边的selinux ?
- 分享Linux 系统生成随机密码的10种方法
- 嵌入式Linux学习----制作NFS文件系统
- linux通过远程桌面访问windows
- 嵌入式Linux学习-----根文件系统
- 嵌入式Linux学习-------Linux内核移植
- centos6.4安装mysql5.5
- 《循序渐进Linux》第二版即将出版发行(附封面)
- 《循序渐进Linux》第二版即将出版发行(附封面)
- 嵌入式Linux学习-----u-boot移植
- centos6.4合并两个DVD作为本地yun源
- Linux常用Terminal命令與快捷鍵參考
- Linux平台下安装SSH,免密码登录
- CentOS安装IPython
- 在 Debian Linux 上安装配置 ISC DHCP 服务器
- Linux 网卡驱动设备程序设计(1)
- linux下创建的符号链接的权限
- Linux软件的卸载
- Linux管线命令
- Linux管线命令