一、共享内存
、获取一个键值 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. linux 下ip命令对比ifconfig命令

    原文:https://linux.cn/article-3144-1.html ------------------------------------------------------------ ...

  2. 在CentOS 6 中安装 Apache,Mysql, PHP

    1.安装Apache 在终端中输入以下的命令就能够安装Apache了: sudo yum install httpd sudo的意思是用root用户做什么操作.要点击y就确认下载安装了,非常方便. 然 ...

  3. UISearchBar作为inputAccessoryView时的响应链

    UISearchBar对象做为一个普通的视图对象加入到视图控制器的self.view中,定义.初始化.设置delegate.然后becomeFirstResponder,最后resignFirstRe ...

  4. CSS3动画遮罩文字特效

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  5. 查看及改动Oracle编码格式方法

     首先查看oracle数据库的编码 SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET ...

  6. c++ valarray 实现矩阵与向量相乘

    #include <iostream>#include <valarray> template<class T> class Slice_iter { std::v ...

  7. IP Address

    http://poj.org/problem?id=2105 #include<stdio.h> #include<string.h> int main() { ]; ] = ...

  8. 0503 php中for与foreach的区别

    结论: foreach:只能用于数组和对象,如果是非索引数组,只可以用foreach. for:如果是索引数组,可以用for遍历. foreach循环结构是按照数组内部的指针去循环的,当 foreac ...

  9. 模拟Queue(wait/notify)

    BlockingQueue:顾名思义,首先它是一个队列,并且支持阻塞的机制,阻塞的放入和得到数据.我们要实现LinkedBlockingQueue下面的两个方法put和take. put(anObje ...

  10. vmware 14黑屏处理办法

    从12升级到了14,但是发现所有的虚拟机都不能用了,黑屏.挂起的时候反而会显示界面,但是继续运行就是黑屏. 记录下解决办法. 修复LSP 以管理员身份运行CMD命令: netsh winsock re ...