精华内容
下载资源
问答
  • Listen

    2014-08-28 15:52:54
    Listen

    int listen(

      _In_  SOCKET s,

      _In_  int backlog

    );

     

    Backlog挂起连接队列的最大长度。如果设置为SOMAXCONN ,负责套接字s的基础服务提供商将设置积压,最高合理值。没有标准规定,以获得实际积压的价值。

                   函数说明:listen()用来等待参数s 的socket 连线. 参数backlog 指定同时能处理的最大连接要求, 如果连接数目达此上限则client 端将收到 ECONNREFUSED 的错误. Listen()并未开始接收连线, 只是设置socket 为listen 模式, 真正接收client 端连线的是accept(). 通常listen()会在socket(), bind()之后调用, 接着才调用accept().

    返回值:成功则返回0, 失败返回-1, 错误原因存于errno

    附加说明:listen()只适用SOCK_STREAM 或SOCK_SEQPACKET 的socket 类型. 如果socket 为AF_INET 则参数backlog 最大值可设至128.

    错误代码:
       EBADF 参数sockfd 非合法socket 处理代码
       EACCESS 权限不足
       EOPNOTSUPP 指定的socket 并未支援listen 模式.

    展开全文
  • listen

    2014-11-17 17:31:06
    listen()函数   是换换内容得时候了。假如你不希望与远程的一个地址相连,或者说, 仅仅是将它踢开,那你就需要等待接入请求并且用各种方法处理它们。处 理过程分两步:首先,你听--listen(),然后,你接受--...
    listen()函数 
      是换换内容得时候了。假如你不希望与远程的一个地址相连,或者说, 仅仅是将它踢开,那你就需要等待接入请求并且用各种方法处理它们。处 理过程分两步:首先,你听--listen(),然后,你接受--accept() (请看下面的 内容)。 
    除了要一点解释外,系统调用 listen 也相当简单。 
    int listen(int sockfd, int backlog);  
    sockfd 是调用 socket() 返回的套接字文件描述符。backlog 是在进入 队列中允许的连接数目。什么意思呢? 进入的连接是在队列中一直等待直 到你接受 (accept() 请看下面的文章)连接。它们的数目限制于队列的允许。 大多数系统的允许数目是20,你也可以设置为5到10。 

    和别的函数一样,无错误发生返回0,发生错误的时候返回SOCKET_ERROR,并设置全局错误变量 errno。

    你可能想象到了,在你调用 listen() 前你或者要调用 bind() 或者让内 核随便选择一个端口。如果你想侦听进入的连接,那么系统调用的顺序可 能是这样的:  
    展开全文
  • nginx listen

    2020-01-18 22:29:11
    listen address[:port] listen port [default_server] listen unix:path [default_server] listen 127.0.0.1:8000; listen 127.0.0.1; listen 8000; listen *:8000; listen localhost:8000; listen host:port host...

    listen address[:port]
    listen port [default_server]
    listen unix:path [default_server]

    listen 127.0.0.1:8000;
    listen 127.0.0.1;
    listen 8000;
    listen *:8000;
    listen localhost:8000;
    

    listen host:port
    host是指监听来自指定ip的链接,默认是*既监听所有ip的链接(和flask的0.0.0.0作用相同)
    port是指监听来自本机80端口的链接,默认是.80

    参考:
    http://nginx.org/en/docs/http/ngx_http_core_module.html#listen

    展开全文
  • listen函数

    万次阅读 2017-08-19 20:54:04
    listen函数,从英语上理解就是一个"听"函数,实际上它也就是这个意思。我们来看unix网络编程这本书是怎样对它的解释:listen函数把一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该套接字的链接请求...

              listen函数,从英语上理解就是一个"听"函数,实际上它也就是这个意思。我们来看unix网络编程这本书是怎样对它的解释:listen函数把一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该套接字的链接请求。该函数有2个参数,第一个我就不说了,第二参数规定了内核为相应套接字排队的最大连接个数。只看这些理论搞的人稀里糊涂,我们还是来测一下。

     

    [mapan@localhost test]$ ls
    client.cpp  makefile  server.cpp
    [mapan@localhost test]$ 
    [mapan@localhost test]$ cat server.cpp 
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netdb.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include <errno.h>
    #include <malloc.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <sys/ioctl.h>
    #include <stdarg.h>
    #include <fcntl.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <signal.h>
    #define MAXLINE 4096
    
    
    
    void main()
    {
       int listenfd,connfd;
       socklen_t  clilen;
       struct sockaddr_in cliaddr,servaddr;
    
       listenfd=socket(AF_INET,SOCK_STREAM,0);
       bzero(&servaddr,sizeof(servaddr));
    
       servaddr.sin_family=AF_INET;
       servaddr.sin_addr.s_addr=INADDR_ANY;
       servaddr.sin_port=htons(8888);
    
       bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));  
       listen(listenfd,1);
    
       getchar();
       connfd=accept(listenfd,(struct sockaddr *)&cliaddr,&clilen);
    
    
    
       close(connfd);
       close(listenfd);
    }
    [mapan@localhost test]$ cat client.cpp 
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netdb.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include <errno.h>
    #include <malloc.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <sys/ioctl.h>
    #include <stdarg.h>
    #include <fcntl.h>
    #include <sys/types.h>
    #include <sys/wait.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <signal.h>
    #define MAXLINE 4096
    
    
    void main()
    {
       int sockfd;
       struct sockaddr_in servaddr;
    
    
       sockfd=socket(AF_INET,SOCK_STREAM,0);
       bzero(&servaddr,sizeof(servaddr));
       servaddr.sin_family=AF_INET;
       servaddr.sin_port=htons(8888);
       servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    
       int ret=connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
       getchar();
    
       close(sockfd);
    }
    [mapan@localhost test]$ cat makefile 
    all:server client
    
    server.o:server.cpp
    	g++ -c server.cpp
    client.o:client.cpp
    	g++ -c client.cpp
    server:server.o
    	g++ -o server server.o
    client:client.o
    	g++ -o client client.o
    
    clean:
    	rm -f server client *.o
    [mapan@localhost test]$ 
    

     

     

    请注意上面的服务端中,我是没有调用accept函数的,直接调用getchar()了,跑起来。

     

    [mapan@localhost test]$ make
    g++ -c server.cpp
    g++ -o server server.o
    g++ -c client.cpp
    g++ -o client client.o
    [mapan@localhost test]$ ./server 
    

    服务度开启,然后新打开一个窗口开启客户端。

    [mapan@localhost TCP]$ cd ../test/
    [mapan@localhost test]$ 
    [mapan@localhost test]$ ./client 127.0.0.1
    

     

    查看网络:

    [mapan@localhost test]$ netstat -na | grep 8888
    tcp        0      0 0.0.0.0:8888                0.0.0.0:*                   LISTEN      
    tcp        0      0 127.0.0.1:34846             127.0.0.1:8888              ESTABLISHED 
    tcp        0      0 127.0.0.1:8888              127.0.0.1:34846             ESTABLISHED 
    [mapan@localhost test]$ 
    

    看,已经建立起一个连接了。但是我们没有调用accept函数,连接还是建立起来了,这说说明accept函数和TCP三次握手没啥关系,这也是一个知识盲点。好,在开启一个新窗口运行客户端,查看网络状态。(新开窗口运行客户端同上,这里就不用代码演示了)

     

     

    [mapan@localhost test]$ netstat -na | grep 8888
    tcp        0      0 0.0.0.0:8888                0.0.0.0:*                   LISTEN      
    tcp        0      0 127.0.0.1:34846             127.0.0.1:8888              ESTABLISHED 
    tcp        0      0 127.0.0.1:34848             127.0.0.1:8888              ESTABLISHED 
    tcp        0      0 127.0.0.1:8888              127.0.0.1:34846             ESTABLISHED 
    tcp        0      0 127.0.0.1:8888              127.0.0.1:34848             ESTABLISHED 


    看,又建立起一个连接。在运行一个客户端,看网络状态。

     

    [mapan@localhost test]$ netstat -na | grep 8888
    tcp        0      0 0.0.0.0:8888                0.0.0.0:*                   LISTEN      
    tcp        0      0 127.0.0.1:8888              127.0.0.1:34850             SYN_RECV    
    tcp        0      0 127.0.0.1:34846             127.0.0.1:8888              ESTABLISHED 
    tcp        0      0 127.0.0.1:34848             127.0.0.1:8888              ESTABLISHED 
    tcp        0      0 127.0.0.1:8888              127.0.0.1:34846             ESTABLISHED 
    tcp        0      0 127.0.0.1:8888              127.0.0.1:34848             ESTABLISHED 
    tcp        0      0 127.0.0.1:34850             127.0.0.1:8888              ESTABLISHED


    当第三个客户端连接进来的时候,出现了一个SYN_RECV,这标明第三个客户端没有与服务端建立连接。我们listen函数设置的监听队列为1,那么监听队列塞了2个之后就没有往里面塞了。这下大概懂了listen函数第二个参数的意义了吧,当参数为1的时候只能监听2个套接字,这应该是从0开始数的。为什么是大概呢?其实unix网络编程上是这样说的:listen函数的第二个参数是ESTABLISHED和SYN_RECV之和,只是在监听队列没有满的情况下,SYN_RECV状态不容易重现。这时候在服务度输入一个字符会有啥效果呢?答案告诉你,就是那个SYN_RECV状态变成ESTABLISHED了,这也是 accept函数的作用。accept函数会将已完成连接队列中的对头项返回给进程,所以SYN_RECV变成ESTABLISHED了。这个现象留给大家去实践一下吧,只有自己实践出来的东西才是自己的。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • listen1

    千次阅读 2019-03-26 10:45:54
    const listen1Api = require('../dist/listen1-api'); const express = require('express'); function search(song_name, platform) { let search = '/search?source=' + platform + '&keywords=' + song_...
  • listen函数详解

    千次阅读 2019-02-23 09:12:42
    listen函数详解
  • listen函数介绍

    2020-07-31 09:37:14
    文章目录1 listen函数介绍 1 listen函数介绍 #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int listen(int sockfd, int backlog); /* sockfd: socket文件描述符 backlog: 在...
  • uwsgi listen配置

    2020-11-28 10:08:13
    配置uwsgi.ini中的listen选项,需先增大该系统参数,然后再提高uwsgi的监听队列长度,原因是listen的队列长度不能超过系统参数规定的最大连接数 # 修改 sysctl -w net.core.somaxconn=32768 sysctl -w ...
  • linux listen

    2014-08-28 13:57:49
    listen系统可以使一台主机上的一个tcp socket在某个端口号被动侦听,等待来自其它主机的tcp socket的连接请求,下面是listen系统调用的函数原型:  #include  int listen(int
  • listen()

    2017-08-04 20:40:38
    listen()
  • listen Function

    2013-04-28 08:11:25
    listen Function The listen function places a socket in a state in which it is listening for an incoming connection. int listen( __in SOCKET s, __in int backlog ); Par
  • 一个域名如果只listen 80 没有 listen443 那么用https://域名访问会 先匹配由上至下所有的nginx静态页面 在匹配由上至下所有的nginx接口
  • Socket中listen

    2017-11-30 15:34:21
    listen函数 摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被动...
  • 分析listen状态

    2018-12-02 12:56:10
    Listen一般只有服务器会处于这种状态。 在底层,listen会有一个队列,队列中保存着已经3次握手完毕的tcp,但是上层应用程序还没处理这些socket。此时,客户端认为已经和服务器建立了连接,就有可能给服务器发送信息...
  • 分析listen状态

    2018-12-02 12:56:10
    Listen一般只有服务器会处于这种状态。 在底层,listen会有一个队列,队列中保存着已经3次握手完毕的tcp,但是上层应用程序还没处理这些socket。此时,客户端认为已经和服务器建立了连接,就有可能给服务器发送信息...
  • linux listen函数详解

    2020-02-03 18:58:27
    int listen(int sockfd,int backlog); listen()函数用于服务器,使已绑定的socket等待监听客户端的连接请求,并设置服务器同时可连接的数量,listen函数位于sys/socket.h头文件中; sockfd为socket文件描述符; ...
  • Listen 0.0.0.0:80 Listen [::0]:80

    千次阅读 2019-05-13 11:52:00
    #Listen 12.34.56.78:80Listen 0.0.0.0:80Listen [::0]:80#ServerName localhost:80 前面带#的是注释是 样例给你看的 ,是无效的第二行 0.0.0.0:80表示监听所有网络中对80端口的连接第三行只是第二行的ipv6版本...
  • pg中的Listen/Notify是用来提供客户端之间通过服务段进行消息通信的机制。这两个命令分别是干嘛的呢? LISTEN: 用来注册一个消息通道。 如果在事务中执行listen, 那么事务必须成功commit, listen才生效. session ...
  • 著名listen1 是github项目,一款功能强大的音乐播放器,提供了网页云音乐,虾米音乐,qq音乐,酷狗音乐,酷我音乐,等等,经过我修改后可以支持下载功能,解压后替换原来软件中的listen_chrome_extension文件夹即可
  • PG的listen与notify

    2019-03-25 15:27:20
    listen与notify 相关命令 PG提供了client端之间通过服务器端进行消息通信的机制。这种机制通过listen和notify命令完成 与listen和notify相关命令及函数: *listen:监听消息通道 *unlisten:取消先前的监听 *...
  • python socket的listen参数

    千次阅读 2018-05-03 10:35:05
    serSocket.listen(1000)serSocket.li
  • listen中的backlog

    2018-10-15 21:18:45
    服务端在bind完后,会启用监听,即listen int listen(int sockfd, int backlog); 其中backlog规定了内核应该为响应套接字排队的最大连接个数。 在内核中维护了两个队列,一个是未完成队列,一个是已完成队列 未...
  • socket-listen

    2013-06-15 11:31:47
    摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被动连接。 ...
  • Linux listen系统调用

    2018-04-08 17:48:41
    注:本文分析基于3.10.0-693.el7内核版本,即CentOS 7.4 1、函数原型 int listen(int sockfd, int backlog); ...listen()系统调用是比较简单的,但是涉及了backlog,这个参数是比较复杂的...
  • 网络编程之listen函数

    千次阅读 2018-04-11 13:07:09
    基本TCP客户端/服务器程序的套接字函数listen函数仅由TCP服务调用,它做两件事 1.当socket函数创建一个套接字时,它被假设为一个主动套接字,也就是说,它是一个将调用connect连接的客户套接字。listen函数把一个未...
  • listen指令 nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解。与网络有关的配置命令主要有两个:listen和sever_name。listen命令设置nginx监听地址,对于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,226
精华内容 24,090
关键字:

listen