命名管道例子

news/2024/7/7 6:08:12

Server:

// CNamedPipeClientView 消息处理程序

void  CNamedPipeClientView::OnNamedpipeConnect()
{
    
// TODO: Add your command handler code here

    if (!WaitNamedPipe("//./pipe/mypipe" , NMPWAIT_WAIT_FOREVER))
    {
        MessageBox(
"there is no usable named pipe"
);

        
return
;
    }

    m_hPipe 
= CreateFile("//./pipe/mypipe", GENERIC_READ | GENERIC_WRITE, 0
, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    
if (INVALID_HANDLE_VALUE ==
 m_hPipe)
    {
        MessageBox(
"open pipe failed!"
);

        
return
;
    }
}

void
 CNamedPipeClientView::OnNamedpipeRead()
{
    
// TODO: Add your command handler code here

    char    buf[100]    = "

 client:

void  CNamePipeSrvView::OnNamepipeCreate()
{
    
// TODO: Add your command handler code here

    m_hPipe = ::CreateNamedPipe("//./pipe/MyPipe", PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, 01102410240 , NULL);

    
if (INVALID_HANDLE_VALUE ==
 m_hPipe)
    {
        MessageBox(
"Create named pipe failed!"
);

        
return
;
    }

    HANDLE    hEvent    
=
 NULL;

    hEvent 
=
 CreateEvent(NULL, TRUE, FALSE, NULL);
    
    
if (!
hEvent)
    {
        MessageBox(
"Create event failed!"
);

        
return
;
    }

    OVERLAPPED    ovlap;

    ZeroMemory(
&ovlap, sizeof
(OVERLAPPED));
    ovlap.hEvent 
=
 hEvent;

    
if (!ConnectNamedPipe(m_hPipe, &
ovlap))
    {
        
if (ERROR_IO_PENDING !=
 GetLastError())
        {
            MessageBox(
"wait for client failed"
);

            CloseHandle(m_hPipe);
            CloseHandle(hEvent);

            
return
;
        }
    }

    
if (WAIT_FAILED ==
 WaitForSingleObject(hEvent, INFINITE))
    {
        MessageBox(
"wait for object failed!"
);

        CloseHandle(m_hPipe);
        m_hPipe 
=
 NULL;

        CloseHandle(hEvent);
        hEvent 
=
 NULL;

        
return
;
    }

        CloseHandle(hEvent);
}

void
 CNamePipeSrvView::OnNamepipeRead()
{
    
// TODO: Add your command handler code here

    char    buf[100]    = "


http://www.niftyadmin.cn/n/1999121.html

相关文章

mysql 全文索引 使用_MySql全文索引

使用索引是数据库性能优化的必备技能之一。在MySQL数据库中,有四种索引:聚集索引(主键索引)、普通索引、唯一索引以及我们这里将要介绍的全文索引(FULLTEXT INDEX)。全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用「分词技术「等多…

php 数组排序 按照某字段

$arr[array(name>小坏龙,age>28),array(name>小坏龙2,age>14),array(name>小坏龙3,age>59),array(name>小坏龙4,age>23),array(name>小坏龙5,age>23),array(name>小坏龙6,age>21),];array_multisort(array_column($arr,age),SORT_DESC,$ar…

给同学的第一次工作的一封信

小伟、小杰、阿刚:你们好!看到你们对工作的热情真的好让我感动。这让我想到了去年和前年时暑假的我。满怀着激情和憧憬去找工作,去努力的发展自己,强大自己。这种感觉真好!开始工作是件很好的事情,是人生的…

mysql如何刷新内存_MySQL-脏页的刷新机制

MySQL内存结构-缓冲区MySQL的缓冲区中有数据页,索引页,插入缓冲等等,这个角度是从页的功能来分类的。本小节从另一个视角关注这些页,如果从 是否被修改过(和磁盘不一致) 这个角度来区分这些页,那么页可以被分为干净的页…

Android开发搭建环境所需要的各种包,不断更新中。。。

封装好的用于开发Android的ADT Bundle:32位版:adt-bundle-windows-x86-20140702.zip请添加链接描述(百度网盘) 64位版:adt-bundle-windows-x86_64-20140702.zip请添加链接描述(Google 地址) 提供了很多Android开发相关…

vc的dll基本用法

vc的dll基本用法 因为要用vc的dll,所以今天做了一些试验,还是有几点记录一下: 一.设置:1.预处理设置:如果有如下错误unexpected end of file while looking for precompiled header directive可以禁止预处理&#…

mysql 周处理_mysql按年度、季度、月度、周、日SQL统计查询mysql没有提供unix时间戳的专门处理函数【转】...

源地址:http://www.educity.cn/wenda/399779.htmlmysql 按年度、季度、月度、周、日SQL统计查询mysql没有提供unix时间戳的专门处理函数,所以,如果遇到时间分组,而你用的又是整型unix时间戳,则只有转化为mysql的其他日…

非常滑稽的表演

非常滑稽的表演 3月28日,我看到一篇新闻报道,题为“38家软件企业呼吁遵守“开源许可证””,顿时引起我的注意。 国内企业呼吁遵守“开源许可证”,是一件好事情,表明企业开始对开源软件给予重视。但是,“…