zoukankan      html  css  js  c++  java
  • 26字节序

    网络通信

    主机---主机

    主机---服务器

    主机---服务器---主机

                    主机--主机

                    主机---服务器

     

                  主机---服务器—主机

    网络字节序   -- 使用大字节序

    #include <arpa/inet.h>

    主机序转网络序

    uint32_t htonl(uint32_t hostlong);

    uint16_t htons(uint16_t hostshort);

    网络序转主机序

    uint32_t ntohl(uint32_t netlong);

    uint16_t ntohs(uint16_t netshort);

    网络通信的数据使用大字节序,但存储在主机上是小字节序

    大字节序(大端):数据的高位保存在内存高位

    小字节序(小端):数据的低位保存在内存高位

    注意:大小字节序 由 CPU 决定,和 操作系统无关,所以我们的个人PC 一般是  X86

    CPU : 小字节序

    PPC 型 CPU: 大字节序

    例子:

    小字节序: int x = 0x12345678

    它在内存里面存储方式:           0x78  0x56  0x34  0x12

    char *pArr;

    pArr = (char*)&x;

    pArr[0] =  0x78

    pArr[1] =  0x56

    pArr[2] =  0x34

    pArr[3] =  0x12

    解析:

    pArr , pArr+1 都是地址,那个大?

    --> pArr 对应的是内存的低端(相对pArr+1), pArr+1对应的内存的高端

    --> int x, 数据的低位存在低端内存, 高位存在高端内存

    --> x 占 4个字节,这四个字节的地址分别是 pArr, pArr+1,pArr+2,pArr+3

    --> pArr 这个字节的内存存的是 x 的低位,也就是 0x78

    --> pArr+3 这个字节的内存存的是 x 的高位,也就是 0x12

    我们malloc一片内存

    char *pBuf = (char*)malloc(256) = (分配的地址为)0xFFFF1000

    & (pBuf[0])  = 0xFFFF1000           数据的高位,放在内存的地位

    & (pBuf[1])  = 0xFFFF1000 + 1

    网络字节序: 使用大字节序

    TCP 通信: 面向连接的,可靠的通信方式   

          --> 建立连接,没发送一条消息都需要对方确认收到,否则重发

    UDP 通信: 面向无连接的,不可靠的通信方式

          --> 不建立连接,只管发送,发送完了就不管了

    PF_INET    protocol family  --> IPV4 协议

    AF_INET    address  family

    两者值一样,意义不同

  • 相关阅读:
    350. Intersection of Two Arrays II
    94. Binary Tree Inorder Traversal
    623. Add One Row to Tree
    JS判断是否为数字,中文,小写、大写字母
    ASP.NET 操作Cookie详解 增加,修改,删除
    ASP.NET MVC 入门1、简介
    通过LINQ TO SQL类显示数据库表的数据
    OutputCache缓存优化asp.net代码 提高网页性能
    数据库读取二进制图片显示到PictureBox中
    WinForm窗体间如何传值的几种方法
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/9216034.html
Copyright © 2011-2022 走看看