当前位置:主页   - 电脑 - 程序设计 - C/C++
c++通道应用(服务器篇)
来源:网络   作者:   更新时间:2012-02-17
收藏此页】    【字号    】    【打印】    【关闭

   【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

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

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明