服务端新建管道,等待客户端连接;客户端连接后,服务端向管道写入"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