服务端:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { printf("=============Mailslot服务端=============/r/n"); //创建邮槽 HANDLE hMailslot; hMailslot = CreateMailslot(_T("////.//mailslot//MyMailslot"), 0, MAILSLOT_WAIT_FOREVER, NULL); if (INVALID_HANDLE_VALUE == hMailslot) { printf("CreateMailslot is failed!/r/n"); return -1; } printf("按任意键读取客户端写入邮槽的参数.../r/n"); _getch(); int args[2]; DWORD dwRead; ReadFile(hMailslot, args, sizeof(args), &dwRead, NULL); //从客户端读取参数 int a, b, c; int *pIntBuf = args; a = *(pIntBuf); pIntBuf++; b = *(pIntBuf); printf("服务端读取到参数(%d, %d)/r/n", a, b); c = a + b; printf("计算结果为:%d/r/n", c); CloseHandle(hMailslot); return 0; }
客户端:
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { printf("=============Mailslot客户端=============/r/n"); HANDLE hMailslot; hMailslot = CreateFile(_T("////.//mailslot//MyMailslot"), GENERIC_WRITE | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (INVALID_HANDLE_VALUE == hMailslot) { printf("CreateFile is failed!/r/n"); return -1; } printf("按任意键准备从客户端写入邮槽的参数.../r/n"); _getch(); int args[2] = { 16, 26 }; DWORD dwWrite; WriteFile(hMailslot, args, sizeof(args), &dwWrite, NULL); printf("已经写入参数(%d, %d)到邮槽,因为是单向通信,结果需从服务器端查看.../r/n", args[0], args[1]); CloseHandle(hMailslot); return 0; }
测试运行结果:
=============Mailslot服务端============= 按任意键读取客户端写入邮槽的参数... 服务端读取到参数(16, 26) 计算结果为:42 请按任意键继续. . . =============Mailslot客户端============= 按任意键准备从客户端写入邮槽的参数... 已经写入参数(16, 26)到邮槽,因为是单向通信,结果需从服务器端查看... 请按任意键继续. . .