服务器程序:
#include<Windows.h>
#include<stdio.h>
int main()
{
HANDLE mail;
mail = ::CreateMailslot(L"\\\\.\\mailslot\\my", 0, MAILSLOT_WAIT_FOREVER, 0);
if (mail == INVALID_HANDLE_VALUE)
{
printf("Create mailslot failed!!\n");
return 0;
}
else
{
printf("Created successfully!!\n");
char text[200];
DWORD readtext;
while (1)
{
if (ReadFile(mail, text, 200, &readtext, nullptr))
{
printf("客服端对你说:%s",text);
printf("\n");
}
}
}
::Sleep(10000);
::CloseHandle(mail);
return 0;
}
客户端程序:
#include<Windows.h>
#include<stdio.h>
#include<iostream>
int main()
{
HANDLE mail2;
char text[] = "Hello, server!!";
DWORD writetext;
/*
CreateFileW(
_In_ LPCWSTR lpFileName,
_In_ DWORD dwDesiredAccess,
_In_ DWORD dwShareMode,
_In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
_In_ DWORD dwCreationDisposition,
_In_ DWORD dwFlagsAndAttributes,
_In_opt_ HANDLE hTemplateFile
);
*/
mail2 = ::CreateFile(L"\\\\.\\mailslot\\my", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE == mail2)
{
printf("Mailslot open failed\n");
}
else
{
while (1)
{
std::cout << "please input what you want to send to server : " << std::endl;
std::cin >> text;
if (WriteFile(mail2, text, sizeof(text), &writetext, NULL))
{
Sleep(1000);
printf("Write successfully!!\n");
}
else
{
printf("Write failed!!\n");
break;
}
}
}
::CloseHandle(mail2);
::Sleep(10000);
return 0;
}
服务器客户端通讯的Windows邮件槽技术实现
本文详细介绍了使用Windows邮件槽技术实现服务器与客户端之间的通讯,包括服务器端创建邮件槽、接收消息以及客户端连接邮件槽并发送消息的过程。
214

被折叠的 条评论
为什么被折叠?



