监听socket(bind()的backlog参数)
来源:互联网 发布:linux解压zip命令详解 编辑:程序博客网 时间:2024/06/11 02:07
监听socket的创建:
#include <sys/socket.h>int listen(int sockfd, int backlog);
sockfd参数指定被监听的socket。backlog参数提示内核监听队列的最大长度(backlog + 1)。
listen成功返回0, 失败返回-1,设置errrno。
研究backlog参数对listen系统调用实际影响:
/***********************/ // @file backlog.c // @author lesliefish(yuleics@outlook.com) // @date 2016-03-28 17:02:36 /***********************/#include <iostream>#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <stdlib.h>#include <assert.h>#include <signal.h>#include <string.h>static bool stop = false;//SIGTERM信号处理函数,触发时执行此函数结束循环static void handle_term(int sig){ stop = true;}int main(int argc, char *argv[]){ signal(SIGTERM, handle_term); if (argc <= 3) { printf("%s ip地址端口号 backlog\n", basename(argv[0]));//basename获取路径最后一个'/'后面的内容 return 1; } const char* ip = argv[1]; int port = atoi(argv[2]); int backlog = atoi(argv[3]); int sock = socket(PF_INET, SOCK_STREAM, 0); assert(sock >= 0); //创建IPv4 socket地址 struct sockaddr_in address; bzero(&address, sizeof(address)); address.sin_family = AF_INET; inet_pton(AF_INET, ip, &address.sin_addr); address.sin_port = htons(port); int ret = bind(sock, (struct sockaddr*)&address, sizeof(address)); assert(ret != -1); ret = listen(sock, backlog); assert(ret != -1); while() { sleep(1); } close(sock); return 0;}
该程序接收3个参数:IP地址,端口号,backlog的值。
客户端多次执行连接(telnet ip port),
命令netstat -nt \grep port 查看服务器连接状态。
在监听队列中,处于ESTABLISHED状态的连接只有backlog+1个。
《Linux高级服务器编程》
0 0
- 监听socket(bind()的backlog参数)
- java socket参数详解:BackLog
- java socket参数详解:BackLog
- java socket参数详解:BackLog
- java socket参数详解:BackLog
- java socket参数详解:BackLog
- linux下socket函数之listen的参数backlog
- socket的listen()的backlog参数和未完成队列、已完成队列的关系
- socket的同步异步的性能差别,以及listen的参数backlog
- Tomcat-connector的微调(1): acceptCount参数(socket的backlog)(重要)
- c#学习笔记之十 socket编程的listen()方法参数的理解,即backlog
- windows socket编程中 listen()的backlog参数和未完成队列、已完成队列的关系
- 关于Linux socket编程之listen函数的第二个参数backlog.
- java socket编程中backlog的含义
- ChannelOption.SO_BACKLOG, 1024-> java socket参数详解:BackLog
- listen的参数backlog的意义
- listen函数中backlog参数的意义
- isten函数的backlog参数解释
- 史上最全的maven pom.xml文件教程详解
- Android View事件传递机制
- 使用Theos做一个简单的Mobile Substrate Tweak
- Android5.0动画,360安全卫士按下波纹效果
- sudo命令
- 监听socket(bind()的backlog参数)
- 迭代器访问容器中的元素
- Genymotion使用中碰到的问题总结
- scala(8)Actor
- ThreadLocal(3)--源码分析
- redis 3.0的集群部署
- Win32学习笔记 - 文件操作
- 高通平台手机开发之LCD
- IOS pch 文件如何使用