<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 8.1 創建和釋放evconnlistener ```cpp struct evconnlistener * evconnlistener_new(struct event_base *base, evconnlistener_cb cb, void *ptr, unsigned flags, int backlog, evutil_socket_t fd); struct evconnlistener * evconnlistener_new_bind(struct event_base *base, evconnlistener_cb cb, void *ptr, unsigned flags, int backlog, const struct sockaddr *sa, int socklen); void evconnlistener_free(struct evconnlistener *lev); ``` 兩個 evconnlistener_new*()函數都分配和返回一個新的連接監聽器對象。連接監聽器使 用 event_base 來得知什么時候在給定的監聽套接字上有新的 TCP 連接。新連接到達時,監聽 器調用你給出的回調函數。 兩個函數中,base參數都是監聽器用于監聽連接的 event_base。cb是收到新連接時要調 用的回調函數; 如果 cb 為 NULL,則監聽器是禁用的,直到設置了回調函數為止。 ptr 指針將傳遞給回調函數。 flags 參數控制回調函數的行為,下面會更詳細論述。 backlog 是任何 時刻網絡棧允許處于還未接受狀態的最大未決連接數。 更多細節請查看系統的 listen()函數文檔。 如果 backlog 是負的,libevent 會試圖挑選一個較好的值 ; 如果為0,libevent 認為已 經對提供的套接字調用了listen()。 --- 兩個函數的不同在于如何建立監聽套接字。 evconnlistener_new()函數假定已經將套接字綁定到要監聽的端口,然后通過 fd 傳入這個套接字。 如果要 libevent 分配和綁定套接字,可以調用 evconnlistener_new_bind() ,傳輸要綁定到的地址和地址長度。 要釋放連接監聽器,調用 evconnlistener_free()。 ##可識別的標志 可以給 evconnlistener_new() 函數的 flags 參數傳入一些標志。可以用或 (OR)運算任意連接 下述標志: * LEV_OPT_LEAVE_SOCKETS_BLOCKING 默認情況下,連接監聽器接收新套接字后,會將其設置為非阻塞的,以便將其用于 libevent。如果不想要這種行為,可以設置這個標志。 * LEV_OPT_CLOSE_ON_FREE 如果設置了這個選項,釋放連接監聽器會關閉底層套接字。 * LEV_OPT_CLOSE_ON_EXEC 如果設置了這個選項,連接監聽器會為底層套接字設置 close-on-exec 標志。更多信息請查 看 fcntl 和 FD_CLOEXEC 的平臺文檔。 * LEV_OPT_REUSEABLE 某些平臺在默認情況下 ,關閉某監聽套接字后 ,要過一會兒其他套接字才可以綁定到同一個 端口。設置這個標志會讓 libevent 標記套接字是可重用的,這樣一旦關閉,可以立即打開其 他套接字,在相同端口進行監聽。 * LEV_OPT_THREADSAFE 為監聽器分配鎖,這樣就可以在多個線程中安全地使用了。這是 2.0.8-rc 的新功能。 ##鏈接監聽器回調 ```cpp typedef void (*evconnlistener_cb)(struct evconnlistener *listener, evutil_socket_t sock, struct sockaddr *addr, int len, void *ptr); ``` 接收到新連接會調用提供的回調函數 。 `listener` 參數是接收連接的連接監聽器 。 `sock` 參數是 新接收的套接字。 `addr` 和 `len` 參數是接收連接的地址和地址長度。 `ptr` 是調 用 evconnlistener_new() 時用戶提供的指針。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看