您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页邮槽

邮槽

来源:保捱科技网

剪切板,匿名管道,命名管道,邮槽 的总结


剪切板和匿名管道只能实现同一台机器上两个进程间的通信 不能跨网络

命名管道和邮槽可以跨网络


邮槽可以一对多广播(一个客户端多个服务器) 数据量小 424字节以下

命名管道 一对一 数据量可以大

服务端==========================================================

void CMy0202ADlg::OnBnClickedButton1()
{
	// TODO: Add your control notification handler code here
	HANDLE hMailslot;
	//创建邮槽
	hMailslot=::CreateMailslotA(
		"\\\\.\\mailslot\\MyMailslot",	//固定格式
		0,				//消息最大尺寸 0为任意大小
		MAILSLOT_WAIT_FOREVER,		//一直等待 如果为0则没收到消息立即返回 单位为ms
		NULL				//默认安全符 此参数为SECURITY_ATTIBUTES结构指针
		);
	if(INVALID_HANDLE_VALUE ==hMailslot)
	{
		::AfxMessageBox("创建邮槽失败!");
		return;
	}
	char buf[100];
	DWORD dwRead;
	//从邮槽读取数据
	if(!::ReadFile(hMailslot,buf,100,&dwRead,NULL))
	{
		::AfxMessageBox("读取数据失败!");
		::CloseHandle(hMailslot);
		return;
	}
	//::AfxMessageBox(buf);
	this->GetDlgItem(IDC_EDIT1)->SetWindowTextA(buf);
	::CloseHandle(hMailslot);
}

客户端==========================================================

void CclientDlg::OnBnClickedButton1()
{
	// TODO: Add your control notification handler code here
	HANDLE hMailslot;
	//打开邮槽
	hMailslot=::CreateFileA(
		"\\\\.\\mailslot\\MyMailslot",
		GENERIC_WRITE,			//访问方式 对于客户端,只能是写入
		FILE_SHARE_READ,		//共享方式 "共享读"让服务端可以从邮槽中读取数据
		NULL,				//指定安全描述符
		OPEN_EXISTING,			//打开的方式
		FILE_ATTRIBUTE_NORMAL,	<span style="white-space:pre">	</span>//文件属性
		NULL				//指定模板文件
		);
	if(INVALID_HANDLE_VALUE ==hMailslot)
	{
		::AfxMessageBox("创建邮槽失败!");
		return;
	}
	char buf[]="此段文字来自于客户端";
	DWORD dwWrite;
	//向邮槽写数据
	if(!::WriteFile(hMailslot,buf,strlen(buf)+1,&dwWrite,NULL))
	{
		::AfxMessageBox("写入数据失败");
		::CloseHandle(hMailslot);
		return;
	}
	::CloseHandle(hMailslot);
}


因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务