windows namedPipe 命名管道clent and server

1.client:


 1 #include "iostream"
2 #include "windows.h"
3
4 using namespace std;
5 void main(int argc,char* argv[])
6 {
7 LPCTSTR Message="the pipe‘s message from a client to server.";
8 if(argc==2)
9 Message=argv[1];
10 DWORD WriteNum;
11
12 if(WaitNamedPipe("\\\\.\\Pipe\\Test",NMPWAIT_WAIT_FOREVER)==FALSE){
13 cout<<"等待链接失败!"<<endl;
14 return;
15 }
16
17 HANDLE hPipe=CreateFile("\\\\.\\Pipe\\Test",GENERIC_READ|18 GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
19 if(hPipe==INVALID_HANDLE_VALUE){
20 cout<<"管道打开失败!"<<endl;
21 return;
22 }
23
24 cout<<"管道连接成功"<<endl;
25 if(WriteFile(hPipe,Message,strlen(Message),&WriteNum,NULL)==FALSE){
26 cout<<"数据写入管道失败!"<<endl;
27 }
28 CloseHandle(hPipe);
29 }

2.server:


 1 #include "iostream"
2 #include "windows.h"
3 using namespace std;
4
5 void main(){
6 char buffer[1024];
7 DWORD ReadNum;
8
9 HANDLE m_hPipe=CreateNamedPipe("\\\\.\\Pipe\\Test",PIPE_ACCESS_DUPLEX,PIPE_TYPE_BYTE|PIPE_READMODE_BYTE,1,0,0,1000,NULL);
10
11
12 if(m_hPipe==INVALID_HANDLE_VALUE)
13 cout<<"创建命名管道失败!"<<endl;
14
15 while(1){
16 if(ConnectNamedPipe(m_hPipe,NULL)==FALSE){
17 CloseHandle(m_hPipe);
18 cout<<"与客户机建立链接失败"<<endl;
19 }
20
21 if(ReadFile(m_hPipe,buffer,1024,&ReadNum,NULL)==FALSE)
22 cout<<"read pipe failer!\n"<<endl;
23
24 else{
25 buffer[ReadNum]=0;
26 cout<<"read pipe is:"<<buffer<<".\n"<<endl;
27 }
28
29 if(DisconnectNamedPipe(m_hPipe)==FALSE)
30 cout<<"终止链接失败"<<endl;
31 else
32 cout<<"成功终止链接"<<endl;
33 if(strcmp(buffer,"end")==0)
34 break;
35 }
36
37 CloseHandle(m_hPipe);
38 }

windows namedPipe 命名管道clent and server,布布扣,bubuko.com

时间: 2024-12-07 14:52:13

windows namedPipe 命名管道clent and server的相关文章

Windows进程间通信—命名管道

命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节.我们在不了解网络协议的情况下,也可以利用命名管道来实现进程间的通信.与Socket网络通信相比,命名管道不再需要编写身份验证的代码.将命名管道作为一种网络编程方案时,它实际上建立了一个C/S通信体系,并在其中可靠的传输数据.命名管道服务器和客户机的区别在于:服务器是唯一一个有权创建命名管道的进程,也只有它能接受管道客户机的连接请求.而客户机只能同一个现成的命名管道服务器建立连接.命名管道服务器只能在WindowsNT或Window

Windows进程间通信--命名管道

1.相关概述 命名管道(Named Pipes)是一种简单的进程间通信(IPC)机制.命名管道可以在同一台计算机的不同进程之间,或者跨越一个网络的不同计算机的不同进程之间的可靠的双向或单向的数据通信. 命名管道利用了微软网络提供者(MSNP)重定向器,因此无需涉及底层的通信协议等细节.命名管道是围绕windows文件系统设计的一种机制,采用"命名管道文件系统"(Named Pipe File System,NPFS)接口.因此,客户端和服务端均可以使用标准的WIN32文件系统API函数

SQL Server 连接问题圣经-命名管道

SQL Server 连接问题圣经-命名管道 (1) APGC DSD Team 12 Jan 2011 1:24 AM 3 一.前言 在使用SQL Server 的过程中,用户遇到的最多的莫过于连接问题了.本文将深度讨论SQL Server 连接问题的方方面面,希望能帮你彻底解决SQL server 的连接问题. SQL Server 支持的通讯协议很多,如命名管道(Named Pipes).TCP/IP 套接字.共享内存(Shared Memory)等.由于最常用的是前两种即命名管道和TCP

SQL Server 连接问题-命名管道

原文:SQL Server 连接问题-命名管道 出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/12/sql-server-1.aspx 一.前言 在使用SQL Server 的过程中,用户遇到的最多的莫过于连接问题了.本文将深度讨论SQL Server 连接问题的方方面面,希望能帮你彻底解决SQL server 的连接问题. SQL Server 支持的通讯协议很多,如命名管道(Named Pipes).TCP/IP 套接字.共享内存(Sh

windows命名管道

命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节. 将命名管道作为一种网络编程方案时,它实际上建立了一个C/S通信体系,并在其中可靠的传输数据.命名管道服务器和客户机的区别在于:服务器是唯一一个有权创建命名管道的进程,也只有它能接受管道客户机的连接请求.而客户机只能同一个现成的命名管道服务器建立连接.命名管道提供了两种基本通信模式,字节模式和消息模式.在字节模式中,数据以一个连续的字节流的形式在客户机和服务器之间流动.而在消息模式中,客户机和服务器则通过一系列不连续的数据单位进行

SQL--Navicat Premium 连接其他电脑出错【命名管道提供程序;无法打开与SQL Server的连接[1326].(1326)】

一.问题复现: Win7 :64位 :SQL Server2012 需要把部分数据库里的历史数据发送给同事,但是同事的SQL Server是08版本的,使用Navicat传输数据:出现报错信息[命名管道提供程序:无法打开与SQL Server的连接[1326].(1326)] 网上的检查流程: 1. 确认数据库是否允许混合登录方式2. 确认数据库是否允许远程连接 3. 确认数据库服务是否正常启动进windows的服务管理器,看带有sqlserver的服务4. 确认客户端到服务器网络畅通在客户机上

SQL2008安装时,“provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) (.Net SqlClient Data Provider)” 错误的解决方案

错误提示: 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) (.Net SqlClient Data Provider) 解决方案: 解决方法:开始->所有程序->Ms Sql Server->配置工具->sql server外围应用配置器->服

provider: 命名管道提供, error: 40 - 无法打开 SQL Server 联系)

李和server连接错误. 在连接 SQL Server 2005 时刻.在默认设置 SQL Server 不同意的远程连接可能导致此故障. (provider: 命名管道提供, error: 40 - 无法打开 SQL Server 联系) 说明: 运行当前 Web 请求期间.出现未处理的异常. 请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的具体信息. 异常具体信息: System.Data.SqlClient.SqlException: 在建立与server的连接时出错.在连

在与 SQL Serve2008r 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) j解决方案

在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 今早开机发现,打开SQL Server 2008 的 SQL Server Management Studio,输入sa的密码发现,无法登陆数据库?提示以下错误: “在与 SQL Server 建立连接时出现与网络相关