<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國際加速解決方案。 廣告
                >[info] TCP粘包的問題 * tcp在發送數據的時候因為存在數據緩存的關系,對于數據在發送的時候在 短時間內 如果連續發送很多小的數據的時候就會有可能一次性一起發送,還有就是對于大的數據就會分開連續發送多次。 ***** >[info] TCP粘包代碼復現 * **服務端代碼** ~~~ <?php echo swoole_get_local_ip()['ens33'] . ':9503' . PHP_EOL; // 實例化swoole 服務端 $server = new Swoole\Server("0.0.0.0", 9503); // 連接 $server->on('connect', function ($server, $fd){ echo "connection open: {$fd}\n"; }); // 消息 $server->on('receive', function ($server, $fd, $reactor_id, $data) { $server->send($fd, "接收到數據: {$data}"); // $server->close($fd); }); // 關閉 $server->on('close', function ($server, $fd) { echo "connection close: {$fd}\n"; }); // 打開 $server->start(); ~~~ * **客戶端代碼** ~~~ <?php // 實例化客戶端 $client = new Swoole\Client(SWOOLE_SOCK_TCP); // 建立連接 if (!$client->connect('127.0.0.1', 9503, -1)) { exit("connect failed. Error: {$client->errCode}\n"); } // 循環發送信息 for ($i = 0;$i < 20;$i++) { // 發送 $client->send("hello_world_"); } // 獲取服務端數據 echo $client->recv(); // 不斷開連接 // while (true){} // 關閉 //$client->close(); ~~~ * **執行效果** 1. 開啟服務端監聽 ![](https://img.kancloud.cn/52/65/52659ef24f07ffebd18da39c1dba586c_435x121.png) 2. 客戶端運行 * 發現循環20次發送并不是一次性,出現粘包現象。 ![](https://img.kancloud.cn/38/20/382008d916ec0e7f9a332a83ef62b97d_764x135.png) ***** >[info] TCP拆包代碼復現 * 當服務端接收到數據過大的時候,tcp傳輸將會把數據包拆分發送。 * **服務端代碼** ~~~ <?php echo swoole_get_local_ip()['ens33'] . ':9503' . PHP_EOL; // 實例化swoole 服務端 $server = new Swoole\Server("0.0.0.0", 9503); // 連接 $server->on('connect', function ($server, $fd){ echo "connection open: {$fd}\n"; }); // 消息 $server->on('receive', function ($server, $fd, $reactor_id, $data) { echo '接收到數據:' . $fd . "\n"; $server->send($fd, "Swoole:ok"); // $server->close($fd); }); // 關閉 $server->on('close', function ($server, $fd) { echo "connection close: {$fd}\n"; }); // 打開 $server->start(); ~~~ * **客戶端代碼** ~~~ <?php // 實例化客戶端 $client = new Swoole\Client(SWOOLE_SOCK_TCP); // 建立連接 if (!$client->connect('127.0.0.1', 9503, -1)) { exit("connect failed. Error: {$client->errCode}\n"); } // 發送 $client->send(str_repeat('123456',100000)); // 獲取服務端數據 echo $client->recv(); // 不斷開連接 // while (true){} // 關閉 //$client->close(); ~~~ * **執行效果** 1. 開啟服務端監聽 * 服務端接收到多次數據包,以為著發送過程中已進行拆包處理。 ![](https://img.kancloud.cn/92/08/9208fa5589c5eba22b0dbbc9dd4a5279_580x193.png) 2. 客戶端執行 ![](https://img.kancloud.cn/69/5e/695ea2ac0d2b10d81710beac5c8b3ea5_500x109.png) >[info] tcp 數據發送過程 * 當有數據來了,首先會把數據放入緩存區,他會根據定時或滿了去發送數據,他不會去區分是第一次還是第二次發送的數據包,所以會存在粘包問題。<span style="color:red;">**(排好隊,一個一個來)**</span> ![](https://img.kancloud.cn/6e/43/6e43e6331b7db986dd5455a3441212d8_1425x707.png) ![](https://img.kancloud.cn/b0/56/b056a39327b2dfb489d03284fa961d5a_1500x846.png)
                  <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>

                              哎呀哎呀视频在线观看