⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 api.cpp

📁 用API实现简单的信息通信
💻 CPP
字号:
/*对服务器来说,管道实例实际就是一个句柄,用于
从本地或远程客户机应用接受一个连接请求。
1) 使用A P I函数C r e a t e N a m e d P i p e,创建一个命名管道实例句柄。
2) 使用A P I函数C o n n e c t N a m e d P i p e,在命名管道实例上监听客户机连接请求。
3) 分别使用R e a d F i l e和Wr i t e F i l e这两个A P I函数,从客户机接收数据,或将数据发给客户
机。
4) 使用A P I函数D i s c o n n e c t N a m e d P i p e,关闭命名管道连接。
5) 使用A P I函数C l o s e H a n d l e,关闭命名管道实例句柄。

服务器进程需要使用C r e a t e N a m e d P i p e这个A P I调用,创建一个命名管道实
例。
从C r e a t e N a m e d P i p e调用成功接收到一个句柄之后(亦即一个管道实例),便必须等待来
自一个命名管道客户机的连接。可使用C o n n e c t N a m e d P i p e这个A P I函数,来建立这个连接。
一个命名管道客户机成功建立了与服务器的连接之后,C o n n e c t N a m e d P i p e这个A P I调用便会
结束。随后,服务器可用Wr i t e F i l e函数,向客户机自由地发送数据;或者使用R e a d F i l e函数,从
客户机那里接收数据。服务器完成了与一个客户机的通信之后,便应调用D i s c o n n c t N a m e d P i p e函
数,以关闭此次通信会话。*/

#include <windows.h>
#include <conio.h>
#include <stdlib.h>
#include <fstream.h>

#include <winbase.h>
#include <winuser.h>

#include <io.h>
#include <string.h>
#include <stdio.h>

void main()
{
	char buffer[256];  //缓冲区信息
	DWORD Recv;
	HANDLE servepipe;
	

	//创建管道
	if((servepipe=CreateNamedPipe("\\\\.\\Pipe\\COTWO",    //管道名
							PIPE_ACCESS_DUPLEX,    //管道访问方式:双向
							PIPE_TYPE_MESSAGE|PIPE_READMODE_BYTE|PIPE_WAIT, //消息流方式写入、读出
							1,256,256,    //最大实例数,输出缓冲区字节数,输入缓冲区字节数
							1000,NULL))==INVALID_HANDLE_VALUE)
	{
		printf("CreateNamedPipe failed with error %d\n", GetLastError());//创建失败提示信息
		return;
	}

	printf("System is running!\n");

	if(ConnectNamedPipe(servepipe,NULL)==0)    //建立命名管道客户机与服务器的连接
	{
		printf("ConnectNamedPipe failed with error %d\n", GetLastError());  //连接失败
		CloseHandle(servepipe);
		return;
	}

	while(1){
	if(ReadFile(servepipe,buffer,sizeof(buffer),&Recv,NULL)<=0)    //读取缓冲区信息
	{
		printf("ReadFile failed with error %d\n", GetLastError());
		CloseHandle(servepipe);
		return;
	}

	printf("%.*s\n",Recv,buffer);
	}

	/*if(DisconnectNamedPipe(servepipe)==0)
	{
		printf("DisconnectNamedPipe failed with error %d\n", GetLastError());
		return;
	}

	CloseHandle(servepipe);*/
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -