<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          StickNode.js 中 TCP 粘包、分包解決方案

          聯(lián)合創(chuàng)作 · 2023-09-22 03:13

          StickPackage,NodeJs 中 TCP 粘包、分包解決方案。

          配置介紹

          •  提供對(duì)TCP粘包處理的解決方案

          •  默認(rèn)緩沖512個(gè)字節(jié),當(dāng)接收數(shù)據(jù)超過(guò)512字節(jié),自動(dòng)以512倍數(shù)擴(kuò)大緩沖空間

          •  本默認(rèn)采用包頭兩個(gè)字節(jié)表示包長(zhǎng)度

          •  默認(rèn)采用大端接模式接收數(shù)據(jù)

          •  可以配置大端小端讀取

          •  可以配置自定義包頭長(zhǎng)度

          Changes:

          • 設(shè)置大端,小端接收,添加setReadIntBE,添加setReadIntLE方法:

          setReadIntBE(type) ,setReadIntLE(type)  type:16  包頭長(zhǎng)度為2,short類(lèi)型
          setReadIntBE(type) ,setReadIntLE(type)  type:32  包頭長(zhǎng)度為4,int類(lèi)型
          

          安裝

          npm i stickpackage
          

          使用方法

          var Stick = require('stickpackage');
          let stick = new Stick(1024).setReadIntBE('16')
          
          /*
          *  包含兩個(gè)數(shù)據(jù)包,10個(gè)字節(jié),包頭為short,兩個(gè)字節(jié):[0x00, 0x02],[ 0x00, 0x04]
          *  數(shù)據(jù)包1:[0x00, 0x02, 0x66, 0x66]
          *  數(shù)據(jù)包2:[0x00, 0x04, 0x88, 0x02, 0x11, 0x11]
          */
          let data = Buffer.from([0x00, 0x02, 0x66, 0x66, 0x00, 0x04, 0x88, 0x02, 0x11, 0x11]);
          
          /*  構(gòu)造兩個(gè)buffer
          *   data2_1包含:  第一個(gè)數(shù)據(jù)包的全部數(shù)據(jù),第二個(gè)數(shù)據(jù)包的部分?jǐn)?shù)據(jù)	
          *   data2_2包含:  第二個(gè)數(shù)據(jù)包的剩余數(shù)據(jù)
          */
          let data2_1 = Buffer.from([0x00, 0x00, 0x00, 0x02, 0x66, 0x66, 0x00, 0x04, 0x88, 0x02, 0x11]);
          let data2_2 = Buffer.from([0x11]);
          
          // 設(shè)置收到完整數(shù)據(jù)觸發(fā)器
          stick.onData(function (data) {
              console.log('receive data,length:' + data.length);
              console.log(data)
          });
          
          stick.putData(data);        
          stick.putData(data2_1);
          stick.putData(data2_2);  
          
          //  運(yùn)行結(jié)果:   
          //  receive data,length:4 <Buffer 00 02 66 66>  
          //  receive data,length:6 <Buffer 00 04 88 02 11 11>
          //  receive data,length:2< Buffer 00 00> receive data, length:4 < Buffer 00 02 66 66> receive data, length:6< Buffer
          瀏覽 21
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲五月丁香免费 | 成人污视频在线观看 | 9久热精品| 国内毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 最新的黄色网址 |