zoukankan      html  css  js  c++  java
  • 使用nodejs发送和接受tcp请求

    使用nodejs发送和接受tcp请求
    // 使用 promise-socket 同步执行
    const {PromiseSocket} = require("promise-socket")
    
    const client = async (path, fileName) => {
      const socket = new PromiseSocket();
      socket.setTimeout(1000)
      await socket.connect({host:ip, port:port});
      let response = await socket.read(1)
      await socket.write(Buffer.from([IP.length%16, IP.length/16]));
      await socket.end();
      return true;
    }
    
    tcp 是以字节流来发送和接受数据,通过wireshark可以看到
    00 50 56 99 e8 00 3c fd fe 7c 78 01 08 00 45 00
    00 34 cc 3b 40 00 36 06 77 58 3d a4 2f ce 0a 15
    89 a9 1d f4 a6 67 a6 c8 9f e0 dd cc f7 fd 80 11
    00 08 4a 6b 00 00 01 01 08 0a 6e ed 67 b1 05 2f
    6e 7b
    其中 00 表示一个字节(8位), 8位的二进制数最多可以表示255(11111111);
    所以如果要算出一个字节的数具体是多少,可以通过与 256的n次方 求商或者取余得到;
    12345
    1 226 64
    1  E2 40
    
    从右往左:第n位数 = (12345/256的n次方)%256
    n从0开始
    
    例子: 将数字1234以 2 bytes发出
    1. 1234转换为16进制:04D2
    2. 
    Buffer.from([1234/256, 1234%256]); //大端
    Buffer.from([1234%256, 1234/256]); //小端
    
    计算机硬件有两种储存数据的方式:大端字节序(big endian)和小端字节序(little endian)。
    举例来说,数值0x2211使用两个字节储存:高位字节是0x22,低位字节是0x11。
    大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。
    小端字节序:低位字节在前,高位字节在后,即以0x1122形式储存。
  • 相关阅读:
    NodeJS学习笔记(三) 模块与包_深入学习
    NodeJS学习笔记(二) 模块与包_基础部分
    Java 开发环境搭建
    Quartz.net 定时任务矿建Demo
    MVC AJAX.BeginForm() 页面异步提交
    源码学习分享
    WPF系能优化
    谈如何阅读框架源码
    Linux源码学习(7) 2013-3-1
    Linux源码学习(6) 2013-3-1
  • 原文地址:https://www.cnblogs.com/stellar/p/11545036.html
Copyright © 2011-2022 走看看