Программирование для Windows NT (том 2)



         

Приложение MSLOTС


Исходный текст клиентского приложения MSLOTC представлен в листинге 2.14.

Листинг 2.14. Файл mailslot/mslotc/mslotc.c

// ==================================================

// Приложение MSLOTC (клиентское приложение)

// Демонстрация использования каналов Mailslot

// для передачи данных между процессами

//

// (С) Фролов А.В., 1996

// Email: frolov@glas.apc.org

// ==================================================

#include <windows.h>

#include <stdio.h>

#include <conio.h>

DWORD main(int argc, char *argv[])

{

  // Идентификатор канала Mailslot

  HANDLE hMailslot;

  // Буфер для имени канала Mailslot

  char   szMailslotName[256];

  // Буфер для передачи данных через канал

  char   szBuf[512];

  // Количество байт, переданных через канал

  DWORD  cbWritten;

  printf("Mailslot client demo\n"

    "(C) A. Frolov, 1996, Email: frolov@glas.apc.org\n");

  printf("Syntax: mslotc [servername]\n");

  // Если при запуске было указано имя срвера,

  // указываем его в имени канала Mailslot

  if(argc > 1)

    sprintf(szMailslotName, "\\\\%s\\mailslot\\$Channel$",

      argv[1]);

 

  // Если имя сервера задано не было, создаем канал

  // с локальным процессом

  else

    strcpy(szMailslotName, "\\\\.\\mailslot\\$Channel$");

  // Создаем канал с процессом MSLOTS

  hMailslot = CreateFile(

    szMailslotName, GENERIC_WRITE,

    FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);

   

  // Если возникла ошибка, выводим ее код и

  // завершаем работу приложения

  if(hMailslot == INVALID_HANDLE_VALUE)

  {

    fprintf(stdout,"CreateFile: Error %ld\n",

      GetLastError());

    getch();

    return 0;

  }

  // Выводим сообщение о создании канала

  fprintf(stdout,"\nConnected. Type 'exit' to terminate\n");

  // Цикл посылки команд через канал

  while(1)

  {

    // Выводим приглашение для ввода команды




Содержание  Назад  Вперед