进程间命名管道通信示例

来源:互联网 发布:黑客帝国 矩阵革命 编辑:程序博客网 时间:2024/05/22 17:35

     服务端新建管道,等待客户端连接;客户端连接后,服务端向管道写入"I am the true server"的身份信息,客户端从管道读取此信息,来确认已连上目标管道;

     然后客户端向管道写入文件名,服务端从管道读取文件名后,打开文件,将读出的内容通过管道传递给客户端,最后由客户端显示。

 

 

服务端:

客户端:

 

 

     这里有几点要注意:

     因为服务端等待客户端连接时,会停留在ConnectNamedPipe(hNamedPipe, NULL)处,为了让对话框依然能够与用户进行交互,将创建管道等功能操作置于另一线程中;同样客户端也用了多线程技术。

     再就是向管道中写入信息时,因为定义UNICODE后,TCHAR占2bytes;所以向管道写入时,WriteFile的第三个参数(DOWRD nNumberOfBytesToWrite [in] Number of bytes to write to the file. )因由字符串长度乘以 2 。所以在程序中定义了CHARLEN(在UNICODE定义时为2,UNICODE为定义时为1)于字符串长度相乘(刚开始弄时没注意搞了好久好久,人都要疯掉了,题外话)

    最后就是从文件中读入内容后,要用MultiByteToWideChar处理下(具体用法参阅别处),不然往EDIT控件中写入后是乱码。

 

     我是新手,刚开始这方面的编程;有程序中有哪里不对的或者不妥的,请大侠帮忙指出来谢谢!

     我的第一篇文章,伤人的砖就别拍了。

 

     如果,小概率事件发生了,您要转载,或者使用这些代码,请注明出处:

 http://blog.csdn.net/zha_1525515/archive/2009/10/04/4631951.aspx

原创粉丝点击