问题:共享内存在Windows服务和普通进程之间无法工作
我的项目中有一个后台服务,开机自启动,然后会去服务器上获取大数据,缓存在自己的地址空间中。
另外一个进程(Windows Form界面)启动之后会来这个服务这里获取这些数据。
开始为了方便开发调试,我的后台服务并没有做成服务,开发时候就是一个直接的进程,称为进程A。
启动之后从服务器端获取大数据,然后通过共享内存的方式传递给进程B(即那个Windows form界面)。
我采用共享内存方式,因为要说到效率首先就想到共享内存,C#中共享内存的方法封装在MemoryMappedFile类中,CreateNew()创建共享内存,OpenExsisting()打开已有的共享内存来访问。
开发的时候,进程A以进程的方式运行,我的这个流程工作没有任何问题。
但是今天部署的时候,将进程A安装位Windows服务之后,共享内存就无论如何也不能工作了。
要么是找不到指定文件,要么就是什么错误也没有,但是什么也读不到。。。。
我在网上查了一下,貌似是说WIndows7下面 WIndows服务和进程是不能采用共享内存来进行数据传输的,而WIndows XP可以。。。 (我怎么觉得很不合理呢???)
引用网络上的一个帖子的回复:
=========================================================================
从vista以后的版本都测试不通过,winXp和win2003测试通过。 好像是为了安全性吧
=================================================================
另外我想说的是,Windows服务和普通进程,以及WinForm这些之间都是可以采用命名管道来进行通信的。
消息队列也可以用于WIndows服务和普通进程之间的通信,只是创建队列的时候需要设置队列的权限,参见这里。
这个问题亟需解决!!!
解决方法:命名管道
根据i命名管道的读写方法write(char[] buffer, int offset, int count),可以知道命名管道一次可以发送的数据量大小是int.MAXVALUE,就是2^31 = 2G。
所以一般来说同一个机器之间的大数据传输需求可以满足,下面是我的代码:
(一)这是WIndows服务中的一个线程,开启一个命名管道,等待获取大数据的请求:
(二)这是普通进程(window form)的代码,连接到命名管道,请求接收数据:
下面两个是用的到两个序列化的方法:
分享到:
相关推荐
)(附:Svchost.exe文件对那些从动态连接库中运行的服务来说是一个普通的主机进程名。Svhost.exe文件定位在系统的 %systemroot%\system32文件夹下。在启动的时候,Svchost.exe检查注册表中的位置来构建需要加载的服务...
Windows操作系统(包括Windows NT, Windows 9x系列)是一种支持多进程的操作系统。其进程调度主要采用“事件驱动架构”方式,即通常情况下,进程仅在有窗口管理信息(Window Management Messages,简称WM消息)需要...
最初是Windows NT版本的可选包,随后内置在Windows 2000、Windows XP Professional和Windows Server 2003一起发行,但在普遍使用的Windows XP Home版本上并没有IIS。 添加和运行准备 一、IIS的添加 请进入“控制...
命名管道"或"命名管线"(Named Pipes)是一种简单的进程间通信(I P C)机制, Microsoft Windows NT,Windows 2000,Windows 95以及Windows 98均提供了对它的支持 (但不包括Windows CE).命名管道可在同一台计算机的不同...
网络操作系统(Network Operating System, NOS)是计算机网络的基础,其主要作用在于管理和优化网络环境中的资源共享、数据传输以及网络安全。在标题和描述中提到,网络操作系统的核心任务是处理资源的最大共享与...
19. Windows NT设计模型:Windows NT的设计基于客户/服务器、对象和对称多处理器模型,不包括浏览器/服务器模型。 20. Windows NT中断处理:查找特定中断服务程序时,Windows NT使用中断分配表(IDT)。 21. 网络...
本资源为 2010 年 4 月高等教育自学考试网络操作系统真题及答案,共 30 道题,涵盖计算机操作系统、网络操作系统、文件系统、进程管理、网络协议、数据结构等多个方面。通过解读这些题目,可以了解操作系统的基本...
- 包含服务器操作系统、网络服务软件以及传输协议软件,以提供客户端的服务请求。 5. UNIX 系统中的 chmod 命令: - 用于修改文件或目录的访问权限。 6. 网络操作系统中的核心层次: - 内核是操作系统的核心,...
【知识点详解】 1. 计算机系统中的中断... 进程由程序计数器(PC)、数据集合和进程控制块(PCB)组成。 25. 互斥资源的定义: 一次只允许一个进程使用,在它未用完之前,不允许其他进程使用的资源称为临界资源。
4. **网络流量监控**:利用网络嗅探工具分析网络流量,查找可疑通信或数据传输。 5. **内存分析**:内存转储分析可以揭示运行中的进程、模块和线程,发现恶意软件或后门。 6. **磁盘镜像**:为了保护原始证据不被...
系统内部采用Socket进行进程间通信,确保数据传输的可靠性和效率。动态库的使用则允许系统在运行时加载和卸载模块,增强了灵活性和可扩展性。 5. **消息日志数据库** LST维护了一个消息日志数据库,用于存储测试...
- **通信协议**:如TCP/IP协议族,定义了数据传输的规则。 ### 27. IP地址的组成部分 **知识点概述:** IP地址由网络号和主机号组成。 **详细解释:** - **网络号**:用于标识所在的网络。 - **主机号**:用于...
为了确保数据的正确性和完整性,HTTP利用TCP/IP协议提供的可靠数据传输服务。 #### 四、IPC$(进程间通信) IPC$(Internet Process Connection)是指Windows操作系统中的一个特殊的共享资源,用于实现远程过程...
3.5 普通文件传输协议(TFTP) 26 3.6 简单邮件传输协议(SMTP) 26 3.7 网络文件系统(NFS) 26 3.8 简单网络管理协议(SNMP) 27 3.9 TCP/IP和系统结合 27 3.10 内部网概述 28 3.11 小结 28 第二部分 命名和寻址 第4章 IP...
3.5 普通文件传输协议(TFTP) 26 3.6 简单邮件传输协议(SMTP) 26 3.7 网络文件系统(NFS) 26 3.8 简单网络管理协议(SNMP) 27 3.9 TCP/IP和系统结合 27 3.10 内部网概述 28 3.11 小结 28 第二部分 命名和寻址 第4章 IP...
3.5 普通文件传输协议(TFTP) 26 3.6 简单邮件传输协议(SMTP) 26 3.7 网络文件系统(NFS) 26 3.8 简单网络管理协议(SNMP) 27 3.9 TCP/IP和系统结合 27 3.10 内部网概述 28 3.11 小结 28 第二部分 命名和寻址 第4章 IP...
23. ISDN代表综合业务数字网,是一种整合语音和数据传输的数字通信服务。 24. Modem是调制解调器的简称,用于模拟信号和数字信号之间的转换,常用于拨号上网。 以上是计算机网络基础练习题所涉及的知识点,涵盖了...
3.5 普通文件传输协议(TFTP) 26 3.6 简单邮件传输协议(SMTP) 26 3.7 网络文件系统(NFS) 26 3.8 简单网络管理协议(SNMP) 27 3.9 TCP/IP和系统结合 27 3.10 内部网概述 28 3.11 小结 28 第二部分 命名和寻址 第4章 IP...