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

📄 server.cpp

📁 visual c++网络通信程序开发指南附带的程序所有的源码。
💻 CPP
字号:
// Server.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"


int main(int argc, char* argv[])
{
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	char ReadBuf[100];
	DWORD ReadNum;
	
	// 管道读句柄
	HANDLE hRead;

	// 管道写句柄
	HANDLE hWrite;

	// 创建匿名管道
	BOOL bRet = CreatePipe(&hRead, &hWrite, NULL, 0);
	if (bRet == TRUE)
		printf("成功创建匿名管道!\n");
	else
		printf("创建匿名管道失败,错误代码:%d\n", GetLastError());

	// 得到本进程的当前标准输出
	HANDLE hTemp = GetStdHandle(STD_OUTPUT_HANDLE);

	// 设置标准输出到匿名管道
	SetStdHandle(STD_OUTPUT_HANDLE, hWrite);

	// 获取本进程的STARTUPINFO结构信息
	GetStartupInfo(&si);

	// 创建子进程
	bRet = CreateProcess(NULL, "Client.exe", NULL, NULL, TRUE, NULL, NULL, NULL, &si, &pi);

	// 恢复本进程的标准输出
	SetStdHandle(STD_OUTPUT_HANDLE, hTemp);

	// 输入信息
	if (bRet == TRUE)
		printf("成功创建子进程!\n");
	else
		printf("创建子进程失败,错误代码:%d\n", GetLastError());
	
	// 关闭写句柄
	CloseHandle(hWrite);

	// 读管道直至管道关闭
	while (ReadFile(hRead, ReadBuf, 100, &ReadNum, NULL))
	{
		ReadBuf[ReadNum] = '\0';
		printf("从管道[%s]读取%d字节数据\n", ReadBuf, ReadNum);
	}

	// 输出信息
	if (GetLastError() == ERROR_BROKEN_PIPE)
		printf("管道被子进程关闭\n");
	else
		printf("读数据错误,错误代码:%d\n", GetLastError());

	return 0;
}

⌨️ 快捷键说明

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