首页 > 试题广场 >

int listen(SOCKET s, int backl

[单选题]
int listen(SOCKET s, int backlog);该函数中第二个参数的含义是?
  • 是否打开log信息
  • 是否打开后台log信息
  • 后台等待连接队列的最大限制值
  • 后台等待连接队列的最小限制值
  • 无意义
推荐
C
《TCP/IP详解   卷1:协议》 解释

1)backlog  用于在TCP层接收链接的缓冲池的最大个数,这个个数可在应用层中的listen函数里设置,当客户链接请求大于这个个数(缓冲池满),其它的未进入链接缓冲池的客户端在tcp层上tcp模块会自动重新链接,直到超时(大约57秒后)   
2)我们的应用层的链接完成是要从tcp层的链接缓冲池中移出一个(accept函数实现)

backlog是连接请求队列的最大长度。   
1.在WinSock1.1中最大值5。如果backlog小于1,则backlog被置喂1;若backlog大于SOMAXCONN(定义在winsock.h中,值为5),则backlog被置为SOMAXCONN。   
2.在WinSock2中,没有制定具体值,它由服务提供者决定   
3.有时候backlog设置很小,这时我们接进多少台机器都没问题是因为服务器机器处理速度很快队列来不及填满就处理完了,而且在同一个时刻到来的连接还是很少的


编辑于 2015-01-17 12:36:48 回复(1)
狗题
发表于 2018-04-02 15:02:40 回复(0)
《TCP/IP详解   卷1:协议》  P195.
当时没有看仔细。。。
发表于 2015-11-03 21:48:45 回复(0)
类牛克斯:
1.调用socket函数创建套接字:int socket(int domain, int type, int protocol)//成功返回文件描述符,失败返回-1
domain:套接字中使用的协议簇信息(Protocol)//PF_INET ipv4PF_INET6 ipv6  ...
type:套接字数据传输类型信息//TCP面向连接的套接字SOCK_STREAMUDP面向消息的套接字SOCK_DGRAM
protocol:计算机间通信使用的协议信息//IPPROTO_TCPIPPROTO_UDP
2.调用bind函数绑定IP地址和端口号:int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen)//成功返回0,失败返回-1
多播IP地址:A127 B191 C223 D类
端口号:区别应用程序0-65535 16位
3.调用listen函数转为可接收请求状态:int listen(int sockfd, int backlog)//成功返回0,失败返回-1
4.调用accept函数受理连接请求:int accept(int sockfd, struct sockaddr *myaddr,socklen_t *addrlen)//成功返回文件描述符,失败返回-1
5.read()/write():数据交换
6.close函数关闭连接
发表于 2015-12-21 18:56:27 回复(0)
C的
发表于 2016-01-09 10:00:47 回复(2)
backlog:积压,存货。肯定是统计最大值。选择C
发表于 2021-08-04 16:30:46 回复(0)
backlog中文含义:储备,存货。跟log没有半毛钱关系,所以A,B都不正确
发表于 2018-09-23 09:55:46 回复(1)
后台等待连接队列的最大限制值
发表于 2017-04-11 20:42:26 回复(0)
C
发表于 2015-04-02 13:16:39 回复(0)
答案:C
listen(SOCKET s, int backlog);当有多个客户端程序和服务端相连时,使用backlog这个表示可以接受的排队长度
原文档描述如下:
The  backlog  parameter  defines  the  maximum  length  the queue of pending connections may grow to.  If a connection request arrives with the queue full the client may receive an error with an indication of ECONNREFUSED or, if the underlying  protocol supports retransmission, the request may be ignored so that retries succeed.
编辑于 2015-01-15 16:40:25 回复(0)
C

int listen(int sockfd,int backlog)
sockfd:是bind后的文件描述符.
backlog:设置请求排队的最大长度.当有多个客户端程序和服务端相连时, 使用这个表示可以介绍的排队长度. listen函数将bind的文件描述符变为监听套接字.返回的情况和bind一样.
发表于 2015-01-13 22:51:10 回复(0)