zoukankan      html  css  js  c++  java
  • 共享内存、网络(day13)

    一、共享内存
    1、获取一个键值   ftok(3)
    2、使用键值获取共享内存的id   shmget(2)
    #include <sys/ipc.h>
    #include <sys/shm.h>
    int shmget(key_t key, size_t size, int shmflg);
    功能:分配一块共享内存段。获取和key值相关的共享内存段的id。
    参数:
    key:ftok(3)的返回值
    size:指定了共享内存段的尺寸
    shmflg:
    IPC_CREAT:如果没有和key值相关的内存段,创建
    IPC_EXCL:
    mode: 指定共享内存段的权限
    返回值:
    成功返回共享内存段的id
    失败 -1   errno被设置
    
    编写代码创建一块共享内存段,获取该内存段的id
    代码参见   shmget.c
    
    3、将共享内存关联到进程的虚拟地址空间   shmat(2)
    #include <sys/types.h>
    #include <sys/shm.h>
    void *shmat(int shmid, const void *shmaddr, int shmflg);
    功能:将一块共享内存段添加到进程的地址空间
    参数:
    shmid:指定了共享内存段的id
    shmaddr:NULL  有系统选择地址
    shmflg:
    SHM_RDONLY:共享内存段  只读
    0
    返回值:
    返回共享内存段附加到进程的地址
    错误  (void *) -1   errno被设置
    
    
    4、向内存读写数据
    5、解除进程的虚拟地址到共享内存的关联  shmdt(2)
    int shmdt(const void *shmaddr);
    功能:解除共享内存段和进程地址空间的关联
    参数:
    shmaddr:指定了共享内存段的起始地址
    返回值:
    成功  0
    -1  错误  errno被设置
    
    举例说明   使用共享内存段实现进程间的通讯 
    代码参见   shmA.c  shmB.c
    
    二、网络的基础知识
    
    协议就是规则。
    物理层协议    定义了电气规则
    网帧   定义了网络传输的基本单位     链路层协议
    (以太网、令牌环网)
    在一个局域网里只允许出现一种网帧。
    
    网络通讯中采用TCP/IP协议家族
    TCP/IP 协议分为4层或者5层
    物理层、链路层   网络层、传输层、应用层
    链路层   网络层、传输层、应用层
    
    ip 地址  192.168.1.12    逻辑地址   4G   40亿 
    MAC地址  网卡的物理地址  6个字节    4G *64K
    每块网卡都有自己的一个身份证。
    如和查看本地的ip地址和mac地址
    sudo ifconfig
      
    windows 下 ipconfig /all
    
    要实现通许,需要知道对方的ip地址和端口号
    网络设备
    集线器   hub   就是对电气的放大和分流   物理层 1层交换
    交换机   交换的是网帧     链路层    2层交换
    路由器   交换的是ip报文   网络层    3层交换
    
    ip地址的分类
    既然要做网络通讯,就必须知道ip地址的构成
    ip地址是由网络号和主机号组成
    那么我们就需要知道ip地址的主机号  网络号
    如何获取一个ip地址的网络号?
    需要使用子网掩码
    192.168.1.130/25
    
    192.168.1.130
    255.255.255.128
    192.168.1.128     网络号
    127-2   125
    
    192.168.1.125/25
    
    192.168.1.125
    255.255.255.128
    192.168.1.0
    
    
    192.168.1.125/24
    192.168.1.130/24
    
    局域网内数据的传送过程
    如何查看本机的路由表?
    sudo route -v
    
    如何查看arp表?
    sudo arp -a
    
    如何知道两台机器是否互通?
    ping 目标ip地址
    172.30.3.93
    
    总结:
    一、system v IPC
    共享内存
    二、网络基础
    子网掩码
    三次握手
    TCP/IP协议分层
  • 相关阅读:
    【LeetCode】048. Rotate Image
    【LeetCode】036. Valid Sudoku
    【LeetCode】060. Permutation Sequence
    【LeetCode】001. Two Sum
    【LeetCode】128. Longest Consecutive Sequence
    【LeetCode】081. Search in Rotated Sorted Array II
    【LeetCode】033. Search in Rotated Sorted Array
    顺时针打印矩阵
    矩形覆盖
    二维数组中的查找
  • 原文地址:https://www.cnblogs.com/Kernel001/p/7732638.html
Copyright © 2011-2022 走看看