一、共享内存
、获取一个键值 ftok()
、使用键值获取共享内存的id shmget()
#include <sys/ipc.h>
#include <sys/shm.h>
int shmget(key_t key, size_t size, int shmflg);
功能:分配一块共享内存段。获取和key值相关的共享内存段的id。
参数:
key:ftok()的返回值
size:指定了共享内存段的尺寸
shmflg:
IPC_CREAT:如果没有和key值相关的内存段,创建
IPC_EXCL:
mode: 指定共享内存段的权限
返回值:
成功返回共享内存段的id
失败 - errno被设置 编写代码创建一块共享内存段,获取该内存段的id
代码参见 shmget.c 、将共享内存关联到进程的虚拟地址空间 shmat()
#include <sys/types.h>
#include <sys/shm.h>
void *shmat(int shmid, const void *shmaddr, int shmflg);
功能:将一块共享内存段添加到进程的地址空间
参数:
shmid:指定了共享内存段的id
shmaddr:NULL 有系统选择地址
shmflg:
SHM_RDONLY:共享内存段 只读 返回值:
返回共享内存段附加到进程的地址
错误 (void *) - errno被设置 、向内存读写数据
、解除进程的虚拟地址到共享内存的关联 shmdt()
int shmdt(const void *shmaddr);
功能:解除共享内存段和进程地址空间的关联
参数:
shmaddr:指定了共享内存段的起始地址
返回值:
成功
- 错误 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/ 192.168.1.130
255.255.255.128
192.168.1.128 网络号
- 192.168.1.125/ 192.168.1.125
255.255.255.128
192.168.1.0 192.168.1.125/
192.168.1.130/ 局域网内数据的传送过程
如何查看本机的路由表?
sudo route -v 如何查看arp表?
sudo arp -a 如何知道两台机器是否互通?
ping 目标ip地址
172.30.3.93 总结:
一、system v IPC
共享内存
二、网络基础
子网掩码
三次握手
TCP/IP协议分层

共享内存、网络(day13)的更多相关文章

  1. 【网络编程基础】Linux下进程通信方式(共享内存,管道,消息队列,Socket)

    在网络课程中,有讲到Socket编程,对于tcp讲解的环节,为了加深理解,自己写了Linux下进程Socket通信,在学习的过程中,又接触到了其它的几种方式.记录一下. 管道通信(匿名,有名) 管道通 ...

  2. UNIX网络编程 12 15共享内存区

    管道,FIFO,消息队列,在两个进程交换信息时,都要经过内核传递 共享内存可以绕过,默认fork生成的子进程 并不与父进程共享内存区 mmap munmap msync 父子进程共享内存区的方法之一是 ...

  3. linux网络编程之posix共享内存

    今天继续研究posix IPC对象,这次主要是学习一下posix共享内存的使用方法,下面开始: 下面编写程序来创建一个共享内存: 编译运行: 那posix的共享内存存放在哪里呢?上节中学的posix的 ...

  4. linux网络编程之system v共享内存

    接着上次的共享内存继续学习,这次主要是学习system v共享内存的使用,下面继续: 跟消息队列一样,共享内存也是有自己的数据结构的,system v共享内存也是随内核持续的,也就是说当最后一个访问内 ...

  5. linux网络编程之共享内存介绍

    今天是个好日子,洋人之节乃全球同庆,圣诞一来感觉就要过年了,不过今晚心情有点打折扣,给心爱的人打电话没有打通,本想在平安夜送上快乐的祝福给她,糟糕的心情让自己好像泄了气的皮球一样,无精打彩,心情灰暗, ...

  6. Linux进程间通信(六):共享内存 shmget()、shmat()、shmdt()、shmctl()

    下面将讲解进程间通信的另一种方式,使用共享内存. 一.什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存.共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式 ...

  7. 进程间通信IPC:消息队列,信号量,共享内存

    2015.3.4星期三 阴天 进程间通信:IPC 文件对象:记录文件描述符,文件开关等 IPC标示符:系统全局的流水号两个进程要通信,打开的是唯一的对象进行通讯,通过key操作 XSI IPC:消息队 ...

  8. linux下共享内存mmap和DMA(直接访问内存)的使用 【转】

    转自:http://blog.chinaunix.net/uid-7374279-id-4413316.html 介绍Linux内存管理和内存映射的奥秘.同时讲述设备驱动程序是如何使用“直接内存访问” ...

  9. C扩展 从共享内存shm到memcache外部内存

    引言 - ipc - shm 共享内存 本文会通过案例了解ipc 的共享内存机制使用, 后面会讲解C 如何使用外部内存服务memcached. 好先开始了解 linux 共享内存机制. 推荐先参看下面 ...

随机推荐

  1. [转]趣题:一个n位数平均有多少个单调区间?---- From Matrix67

    考虑这么一个 14 位数 02565413989732 ,如图所示,它的数字先逐渐变大,然后开始变小,再变大,再变小,再变大,再变小.我们就说,它一共包含了 6 个单调区间.我们的问题就是:一个 n ...

  2. SDUT OJ -2892 A

    A nid=24#time" title="C.C++.go.haskell.lua.pascal Time Limit60ms Memory Limit 65536K java. ...

  3. scp and tar

    scp 命令随记 scp file username@remoteIp:directory 创建tar包 tar zcvf file.tar.gz directory tar zcvf hadoop. ...

  4. Java中的锁概念

    掌握Java中锁是Java多线程编程中绕不开的知识,只有知道理解Java各种锁才能在编码过程中灵活运用,写出更高效的多线程程序.而理解掌握锁的第一步,可从宏观上对比理解一下各种锁概念. 公平锁/非公平 ...

  5. Stockbroker Grapevine(floyd)

    http://poj.org/problem?id=1125 题意: 首先,题目可能有多组测试数据,每个测试数据的第一行为经纪人数量N(当N=0时, 输入数据结束),然后接下来N行描述第i(1< ...

  6. yii引入js文件

    作者:zccst 四.在视图层(../views/..)添加CSS文件或JavaScript文件 Yii::app()->clientScript->registerScriptFile( ...

  7. 原生JS---1

    js的历史 在上个世纪的1995年,当时的网景公司正凭借其Navigator浏览器成为Web时代开启时最著名的第一代互联网公司. 由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫Bren ...

  8. Oracle备份Scott

    @echo off echo ================================================ echo Windows环境下Oracle数据库的自动备份脚本 echo ...

  9. 运行Django项目指定IP和端口

    默认IP和端口 python manage.py runserver 指定端口: python manage.py runserver 192.168.12.12:8080 此时会报错,我们需要修改配 ...

  10. pdf 转成 一张图片

    1.maven依赖 <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfb ...