Node.js如何处理数据包碎片与net.Server



当网。服务器接收到超过1500字节(默认mtu)的数据,则对数据包的每个片段执行'on data'事件。是否有一种方法可以在单个"数据"呼叫中接收整个数据包?

谢谢。

试试这个

var sys     = require('sys');
var net     = require('net');;
var socktimeout = 600000;
var svrport = your_port;
var svr = net.createServer(function(sock) {
  var mdata = new Buffer(0);
    //sys.puts('Connected: ' + sock.remoteAddress + ':' + sock.remotePort); 
     sock.setTimeout(socktimeout,function(){
            sock.end("timeout");
            sock.destroy();
        });
    sock.on('data', function(data) {  
        if(mdata.length != 0)
        {
          var tempBuf = Buffer.concat([mdata, data]);
          mdata = tempBuf;
        }
        else
        {
          mdata = data;
        }
        var len=got_your_Packget_length(mdata);
         
      if(mdata.length == len)
      {
        do_your_job(mdata)
        mdata = new Buffer(0);
      }
    });
 
    sock.on('error', function(err) { // Handle the connection error.
        sys.puts('error: ' + err +'n');
    });
});
 
svr.listen(svrport);

最新更新