【问题标题】:equivalent nodejs code for this java code此 java 代码的等效 nodejs 代码
【发布时间】:2014-10-18 14:34:59
【问题描述】:

我遇到了这个java代码, 链接:java socket send & receive byte array

Socket socket = ...
DataInputStream dIn = new DataInputStream(socket.getInputStream());

int length = dIn.readInt();                    // read length of incoming message
if(length>0) {
    byte[] message = new byte[length];
    dIn.readFully(message, 0, message.length); // read the message
}

我只是想知道它们是否是 node.js 中的等效代码??

【问题讨论】:

    标签: java node.js


    【解决方案1】:

    距套接字 convert that to a 32-bit signed big endian integerread 4 个字节,然后读取更多字节:

    function readLength(cb) {
      var length = socket.read(4);
      if (length === null)
        socket.once('readable', function() { readLength(cb); });
      else
        cb(length.readInt32BE(0, true));
    }
    
    function readMessage(cb) {
      readLength(function retry(len) {
        var message = socket.read(len);
        if (message === null)
          socket.once('readable', function() { retry(len); });
        else
          cb(message);
      });
    }
    
    // ...
    
    readMessage(function(msg) {
      // `msg` is a Buffer containing your message
    });
    

    【讨论】:

    • 如果你使用 nodejs TCP 服务器呢??
    • 然后您只需将数据写入套接字即可。您可以write the length 到您写入套接字的缓冲区。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-06
    • 2017-08-11
    相关资源
    最近更新 更多