第118章 メールスロット その3


今回は、LANでつながっている他のコンピュータのメールスロットにも メッセージを発信できるように、前章のプログラムを改良します。



改良といっても、ほんの少しだけ手を加えるだけです。 他のパソコンのメールスロットに送信するには、宛先を

\\相手のパソコン名\mailslot\メールスロットの名前
とするだけです。Cでは、「\」は、「\\」で表す点に注意してください。

自分自身のパソコンに送信するときはコンピュータの名前を「.」(ピリオド)にするか、 実際の名前を指定します。

/* mailslot03.c */

#include <windows.h>
#include <stdio.h>

int MyWrite();

int main()
{
    char szNo[8];
    int nNo;
    BOOL bEnd = FALSE;

    while (1) {
        printf("**** MENU ****\n");
        printf("1.書き込み\n");
        printf("0.終了\n");
        printf("**************\n");
        printf("\n");
        printf("番号選択-->");

        gets(szNo);
        nNo = atoi(szNo);

        switch (nNo) {
            case 1:
                MyWrite();
                break;
            case 0:
                bEnd = TRUE;
                break;
            default:
                printf("不正な番号です\n");
                continue;
        }
        if (bEnd)
            break;
    }
    return 0;
}

int MyWrite()
{
    char szBuf[1024], szTemplate[] = "\\\\%s\\mailslot\\mymail", 
        szComp[64], szMailSlot[128];
    HANDLE hFile;
    BOOL bResult;
    DWORD dwWritten;

    printf("宛先のコンピュータ名(自分の時は'.')---");
    gets(szComp);

    wsprintf(szMailSlot, szTemplate, szComp);


    hFile = CreateFile(szMailSlot, GENERIC_WRITE,
        FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
        NULL);
    
    if (hFile == INVALID_HANDLE_VALUE) {
        printf("メールスロットがありません\n");
        return -1;
    }
    printf("書き込み-->");
    gets(szBuf);
    strcat(szBuf, "\r\n");
    bResult = WriteFile(hFile, szBuf, (int)strlen(szBuf) + 1, &dwWritten, NULL);
    if (bResult == FALSE) {
        printf("Error WriteFie\n");
        CloseHandle(hFile);
        return -2;
    }

    CloseHandle(hFile);
    return 0;
}
受ける側のプログラムは第116章で作ったものを利用します。

今回も簡単でした。


[Index][総合Index] [Previous Chapter] [Next Chapter]

Update Sep/20/2005 By Y.Kumei
当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。