当前位置: 技术问答>linux和unix
请问listen函数中最大队列的问题
来源: 互联网 发布时间:2016-12-07
本文导语: 我在linux下编译TCP协议的通信, 并在服务器端侦听时设置最大队列为2, listen(sks,2);(sks是服务器端的socket) 然后在客户端用connect去连接(这里skc是客户端的socket,adds是服务器端的地址), err=connect(skc,(struct sockaddr*)&ad...
我在linux下编译TCP协议的通信,
并在服务器端侦听时设置最大队列为2,
listen(sks,2);(sks是服务器端的socket)
然后在客户端用connect去连接(这里skc是客户端的socket,adds是服务器端的地址),
err=connect(skc,(struct sockaddr*)&adds,sizeof(struct sockaddr));
if(-1==err)
{
perror("connect error");
return -1;
}
我是这样运行的:
先在一个虚拟终端运行服务器端程序,然后在其他虚拟终端运行客户端程序,
可是我发现当超过2个终端运行客户端程序时,仍然不会出现错误,
可是服务器端的侦听最大队列为2,为什么超过了还不会报错呢?
listen函数的队列参数是什么意思呢?
并在服务器端侦听时设置最大队列为2,
listen(sks,2);(sks是服务器端的socket)
然后在客户端用connect去连接(这里skc是客户端的socket,adds是服务器端的地址),
err=connect(skc,(struct sockaddr*)&adds,sizeof(struct sockaddr));
if(-1==err)
{
perror("connect error");
return -1;
}
我是这样运行的:
先在一个虚拟终端运行服务器端程序,然后在其他虚拟终端运行客户端程序,
可是我发现当超过2个终端运行客户端程序时,仍然不会出现错误,
可是服务器端的侦听最大队列为2,为什么超过了还不会报错呢?
listen函数的队列参数是什么意思呢?
|
listen() 的第二个参数为等待连接队列的最大长度,其实这个的意思是说,在某一时刻同时允许最多有backlog个客户端要和服务器端进行连接,而不是像有些人想的那样,只能允许backlog个服务端与客户端进行连接。
即,是并发链接数
即,是并发链接数