<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 為什么不要send完后立即close [TOC] send完后立即close就是不安全的,無論是服務器端還是客戶端。 send操作成功只是表示數據成功地寫入到操作系統socket緩存區,不代表對端真的接收到了數據。究竟操作系統有沒有發送成功,對方服務器是否收到,服務器端程序是否處理,都不沒辦法確切保證。 > close后的邏輯請看下面的linger設置相關 這個邏輯和電話溝通是一個道理,A告訴B一個事情,A說完了就掛掉電話。那么B聽到沒有,A是不知道的。如果A說完事情,B說好,然后B掛掉電話,就絕對是安全的。 ## linger設置 一個`socket`在close時,如果發送緩沖區仍然有數據,操作系統底層會根據`linger`設置決定如何處理 ~~~ struct linger { int l_onoff; int l_linger; }; ~~~ * l\_onoff = 0,close時立刻返回,底層會將未發送完的數據發送完成后再釋放資源,也就是優雅的退出。 * l\_onoff != 0,l\_linger = 0,close時會立刻返回,但不會發送未發送完成的數據,而是通過一個RST包強制的關閉socket描述符,也就是強制的退出。 * l\_onoff !=0,l\_linger > 0, closes時不會立刻返回,內核會延遲一段時間,這個時間就由l\_linger的值來決定。如果超時時間到達之前,發送完未發送的數據(包括FIN包)并得到另一端的確認,close會返回正確,socket描述符優雅性退出。否則close會直接返回錯誤值,未發送數據丟失,socket描述符被強制性退出。如果socket描述符被設置為非堵塞型,則close會直接返回值。
                  <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>

                              哎呀哎呀视频在线观看