快速业务通道

c++通道应用(服务器篇)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29

【C++程序中命名管道通讯的实现】

最近学习c++中,试手过程选择实 现一个程序与被注入程序互通的工具,感觉如果是计算机本地的通讯使用socket 似乎有些不太理性,俗话说“杀鸡焉牛宰牛刀”,所以使用伟大的 google找到了更适合轻量级程序通讯的内容,即下面所要说的:“管道 ”。

首先按照国际管理,介绍下c++实现“管道” 的几 个核心函数;

CreateNamedPipe(        //服务器端创建 并命名一个管道,服务器端通过提供管道名与其进行通讯
  LPCTSTR lpName, // 管道名称
  DWORD dwOpenMode, // 管道打开模式
  DWORD dwPipeMode, // 管道的其他模式定义
  DWORD nMaxInstances, // 这个管道能够创建的最大实例数量 。必须是1到常数PIPE_UNLIMITED_INSTANCES间的一个值。它对于管道的所有实 例来说都应是相同的
  DWORD nOutBufferSize, // 建议的输出缓冲区长度;零表示 用默认设置
  DWORD nInBufferSize, //  建议的输入缓冲区长度;零表示 用默认设置
  DWORD nDefaultTimeOut, // 管道的默认等待超时。对一个管 道的所有实例来说都应相同
  LPSECURITY_ATTRIBUTES lpSecurityAttributes // pointer to security attributes
  )

详细参数请见:http:  //vbworld.sxnw.gov.cn/vbapi/detail/CreateNamedPipe.htm

C onnectNamedPipe( //指示一台服务器等待下去,直至客户机同一个命名管道连 接
  HANDLE handle, //管道的句柄
      lpOverlapped OVERLAPPED  //如设为NULL(传递 ByVal As Long),表示将线程挂起,直到一个客户同管道连接为止。否则就立 即返回;此时,如管道尚未连接,客户同管道连接时就会触发lpOverlapped结构 中的事件对象。随后,可用一个等待函数来监视连接
  )

详细参数请见:http:  //vbworld.sxnw.gov.cn/vbapi/detail/ConnectNamedPipe.htm

WaitNamedPipe(        //由一个客户进程调用,等候一个管道变成可 用状态
  LPCTSTR lpNamedPipeName, //指定要连接的管道名称
  DWORD nTimeOut //超时设定
  )

详细参数请见:http:  //vbworld.sxnw.gov.cn/vbapi/detail/WaitNamedPipe.htm CreateFile(
  LPCTSTR lpFileName, //指向文件名的指针,如果是写入到管 道当中,则写入管道名
    DWORD dwDesiredAccess, //访问模式(写/读)
    DWORD dwShareMode, //共享模式
    LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向 安全属性的指针
    DWORD dwCreationDisposition, //如何创建
    DWORD dwFlagsAndAttributes, //文件属性
    HANDLE hTemplateFile //用于复制文件句柄
  )

详细参数请见:http://baike.baidu.com/view/1288759.htm

WriteFile( //用于向 管道中写入内容
  HANDLE hFile, // 文件句柄,通过CreateFile创建的句柄
    LPCVOID lpBuffer, // 数据缓存区指针
    DWORD nNumberOfBytesToWrite, // 你要写的字节数
    LPDWORD lpNumberOfBytesWritten, // 用于保存实际写 入字节数的存储区域的指针
    LPOVERLAPPED lpOverlapped // OVERLAPPED结构体指针
  )

详细参数请见:http://baike.baidu.com/view/1295782.htm ReadFile(     //用于读取管道中以写入的信息
  HANDLE hFile, //文件的句柄
    LPVOID lpBuffer, //用于保存读入数据的一个缓冲区
    DWORD nNumberOfBytesToRead, //要读入的字符数
    LPDWORD lpNumberOfBytesRead, //指向实际读取字节数 的指针
    LPOVERLAPPED lpOverlapped //如文件打开时指定了 FILE_FLAG_OVERLAPPED,那么必须,用这个参数引用一个特殊的结构。该结构定 义了一次异

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号