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形式储存。
  • 相关阅读:
    UID卡、CUID卡、FUID卡的区别
    高中数学B版 高中数学A版
    Cenots7 服务搭建之搞清用户和组
    Flink 流处理 word count
    Flink Batch File Word Count
    Flink程序运行完yarn 模式后,返回运行standalone模式运行时。经常会出现运行不成功原因分析.
    Kafka消费者 API(自动提交offset)
    kafka 同步发送消息
    kafka 自定义分区
    kafka生产者 API Demo
  • 原文地址:https://www.cnblogs.com/stellar/p/11545036.html
Copyright © 2011-2022 走看看