UNIX网络编程-listen函数及其包裹函数介绍
2017-03-23 16:56
155 查看
UNIX网络编程-listen函数及其包裹函数介绍
函数简介
#include<sys/socket.h> int listen(int sockfd,int backlog); 返回:若成功则为0,若出错则为-1
目前
listen函数仅为
TCP服务器调用,主要完成两个任务:
1. 将
socket函数创建的还未建立连接的主动套接字转换为被动(监听)套接字,使内核接受指向该套接字的连接。
2. 使用第二个参数规定了内核为相应套接字排队的最大连接个数。
tips:
socket函数创建的套接字被默认为一个主动套接字,即该套接字为将调用
connect函数发起连接的客户套接字。而
listen函数导致该套接字从
CLOSED状态转换为
LISTEN状态。
包裹函数(下载)
历史上总是将backlog设为5,但已无法满足现在服务器的需求了,所以需要指定一个较大的
backlog才能满足繁忙的需求。一种方法是使用一个常值,可是每次增长都需要重新编译,比较麻烦;另一种方法是设定默认值,然后允许通过命令行或环境变量覆盖默认值:
#include<stdlib.h> #include<sys/socket.h> void Listen(int fd,int backlog) { char *ptr; if((ptr = getenv("LISTENQ")) != NULL) backlog = atoi(ptr); if(listen(fd,backlog) == -1) perror("Listen error"); }
这样就可以通过设置环境变量
LISTENQ来动态配置
backlog的大小。
tips:
backlog为0不代表就不会有客户连接到你的机器。如果不想让客户连接,请直接关闭该套接字。
About me
- GitHub:AnSwErYWJ
- Blog:http://www.answerywj.com
- Email:yuanweijie1993@gmail.com
- Weibo:@AnSwEr不是答案
- CSDN:AnSwEr不是答案的专栏
![](https://i.creativecommons.org/l/by-sa/4.0/88x31.png)
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
相关文章推荐
- JavaScript 函数惰性载入的实现及其优点介绍
- js编码、解码函数介绍及其使用示例
- c++ vector各种函数介绍及其用法
- 12.21 python的函数介绍及其应用
- Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解
- Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解
- Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解
- Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解
- js编码、解码函数介绍及其使用示例
- APUE学习笔记——4.2结构体 struct stat 及其相关函数介绍
- Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解
- React组件详细介绍及其生命周期函数
- C/C++ — memset() 函数详解及其作用介绍
- js编码、解码函数介绍及其使用示例
- Math.random() 及其相关函数的详细介绍
- unix网络编程2 读写函数介绍
- linux网络编程之Listen函数参数介绍
- TCP服务器listen函数的包裹函数
- 基于网络层的LTE(含EPC)网络常用类及其函数介绍
- Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解