2#include3#include4#include5" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Linux系統編程:客戶端-服務器用FIFO進行通信

系統 1929 0

先放下代碼? 回來在解釋

頭文件:

clientinfo.h

      
        1
      
      
        struct
      
      
         CLIENTINFO{


      
      
        2
      
      
        char
      
       myfifo[
      
        500
      
      
        ];


      
      
        3
      
      
        int
      
      
         leftarg;


      
      
        4
      
      
        int
      
      
         rightarg;


      
      
        5
      
      
        char
      
      
         op;


      
      
        6
      
      
        }; 


      
      
        7
      
       typedef 
      
        struct
      
       CLIENTINFO CLIENTINFO, *CLINTINFOPTR;
    


client.c

      
         1
      
       #include <unistd.h>


      
         2
      
       #include <stdio.h>


      
         3
      
       #include <stdlib.h>


      
         4
      
       #include <
      
        string
      
      .h>


      
         5
      
       #include <sys/types.h>


      
         6
      
       #include <fcntl.h>


      
         7
      
       #include <signal.h>


      
         8
      
       #include 
      
        "
      
      
        clientinfo.h
      
      
        "
      
      
         9
      
      
        10
      
      
        #define
      
       FIFO_NAME "/home/levi/chatapplication/data/server_fifo/chat_server_fifo"


      
        11
      
      
        #define
      
       BUFF_SZ 100


      
        12
      
      
        13
      
      
        char
      
      
         mypipename[BUFF_SZ];


      
      
        14
      
      
        void
      
       handler(
      
        int
      
      
         sig){


      
      
        15
      
      
            unlink(mypipename);


      
      
        16
      
           exit(
      
        1
      
      
        );


      
      
        17
      
      
        }


      
      
        18
      
      
        19
      
      
        int
      
       main(
      
        int
      
       argc, 
      
        char
      
      
        const
      
       *
      
        argv[])


      
      
        20
      
      
        {


      
      
        21
      
      
        int
      
      
         res;


      
      
        22
      
      
        int
      
      
         fifo_fd, my_fifo;


      
      
        23
      
      
        int
      
      
         fd;


      
      
        24
      
      
            CLIENTINFO info;


      
      
        25
      
      
        char
      
      
         buffer[BUFF_SZ];


      
      
        26
      
      
        27
      
      
            signal(SIGKILL, handler);


      
      
        28
      
      
            signal(SIGINT, handler);


      
      
        29
      
      
            signal(SIGTERM, handler);


      
      
        30
      
      
        31
      
      
        if
      
      (argc != 
      
        4
      
      
        ){


      
      
        32
      
               printf(
      
        "
      
      
        Usage: %s op1 operation op2\n
      
      
        "
      
      , argv[
      
        0
      
      
        ]);


      
      
        33
      
               exit(
      
        1
      
      
        );


      
      
        34
      
      
            }


      
      
        35
      
      
        if
      
      (access(FIFO_NAME, F_OK) == -
      
        1
      
      
        ){


      
      
        36
      
               printf(
      
        "
      
      
        Could not open FIFO %s\n
      
      
        "
      
      
        , FIFO_NAME);


      
      
        37
      
      
                exit(EXIT_FAILURE);


      
      
        38
      
      
            }


      
      
        39
      
           fifo_fd =
      
         open(FIFO_NAME, O_WRONLY);


      
      
        40
      
      
        if
      
      (fifo_fd == -
      
        1
      
      
        ){


      
      
        41
      
               printf(
      
        "
      
      
        Could not open %s for write access\n
      
      
        "
      
      
        , FIFO_NAME);


      
      
        42
      
      
                exit(EXIT_FAILURE);


      
      
        43
      
      
            }


      
      
        44
      
           sprintf(mypipename, 
      
        "
      
      
        /home/levi/chat_client_%d_fifo
      
      
        "
      
      
        , getpid());


      
      
        45
      
           res = mkfifo(mypipename, 
      
        0777
      
      
        );


      
      
        46
      
      
        if
      
      (res != 
      
        0
      
      
        ){


      
      
        47
      
               printf(
      
        "
      
      
        FIFO %s was not created\n
      
      
        "
      
      
        , buffer);


      
      
        48
      
      
                exit(EXIT_FAILURE);


      
      
        49
      
      
            }


      
      
        50
      
      
        51
      
           my_fifo = open(mypipename, O_RDONLY |
      
         O_NONBLOCK);


      
      
        52
      
      
        if
      
      (my_fifo == -
      
        1
      
      
        ){


      
      
        53
      
               printf(
      
        "
      
      
        Could not open %s for read only access\n
      
      
        "
      
      
        , FIFO_NAME);


      
      
        54
      
      
                exit(EXIT_FAILURE);


      
      
        55
      
      
            }


      
      
        56
      
      
        57
      
      
            strcpy(info.myfifo, mypipename);


      
      
        58
      
           info.leftarg = atoi(argv[
      
        1
      
      
        ]);


      
      
        59
      
           info.op = argv[
      
        2
      
      ][
      
        0
      
      
        ];


      
      
        60
      
           info.rightarg = atoi(argv[
      
        3
      
      
        ]);


      
      
        61
      
      
        62
      
           write(fifo_fd, &info, 
      
        sizeof
      
      
        (CLIENTINFO));


      
      
        63
      
      
            close(fifo_fd);


      
      
        64
      
      
        65
      
           memset(buffer, 
      
        '
      
      
        \0
      
      
        '
      
      
        , BUFF_SZ);


      
      
        66
      
      
        while
      
      (
      
        1
      
      
        ){


      
      
        67
      
               res =
      
         read(my_fifo, buffer, BUFF_SZ);


      
      
        68
      
      
        if
      
      (res > 
      
        0
      
      
        ){


      
      
        69
      
                   printf(
      
        "
      
      
        Received from server : %s\n
      
      
        "
      
      
        , buffer);


      
      
        70
      
      
        break
      
      
        ;


      
      
        71
      
      
                }


      
      
        72
      
      
            }


      
      
        73
      
           printf(
      
        "
      
      
        Client %d is terminating\n
      
      
        "
      
      
        , getpid());


      
      
        74
      
      
            close(my_fifo);


      
      
        75
      
           (
      
        void
      
      
        )unlink(mypipename);


      
      
        76
      
      
        return
      
      
        0
      
      
        ;


      
      
        77
      
       }
    

?

server.c

      
         1
      
       #include <unistd.h>


      
         2
      
       #include <stdio.h>


      
         3
      
       #include <stdlib.h>


      
         4
      
       #include <
      
        string
      
      .h>


      
         5
      
       #include <sys/types.h>


      
         6
      
       #include <fcntl.h>


      
         7
      
       #include <signal.h>


      
         8
      
       #include 
      
        "
      
      
        clientinfo.h
      
      
        "
      
      
         9
      
      
        10
      
      
        #define
      
       FIFO_NAME "/home/levi/server_fifo/chat_server_fifo"


      
        11
      
      
        void
      
       handler(
      
        int
      
      
         sig){


      
      
        12
      
      
            unlink(FIFO_NAME);


      
      
        13
      
           exit(
      
        1
      
      
        );


      
      
        14
      
      
        }


      
      
        15
      
      
        16
      
      
        int
      
      
         calc(CLIENTINFOPTR info){


      
      
        17
      
      
        switch
      
      (info->
      
        op){


      
      
        18
      
      
        case
      
      
        '
      
      
        +
      
      
        '
      
       : 
      
        return
      
       info->leftarg + info->
      
        rightarg;


      
      
        19
      
      
        case
      
      
        '
      
      
        -
      
      
        '
      
       : 
      
        return
      
       info->leftarg - info->
      
        rightarg;


      
      
        20
      
      
        case
      
      
        '
      
      
        *
      
      
        '
      
       : 
      
        return
      
       info->leftarg * info->
      
        rightarg;


      
      
        21
      
      
        case
      
      
        '
      
      
        /
      
      
        '
      
       : 
      
        return
      
       info->leftarg / info->
      
        rightarg;


      
      
        22
      
      
            }


      
      
        23
      
      
        return
      
      
        0
      
      
        ;


      
      
        24
      
      
        }


      
      
        25
      
      
        26
      
      
        int
      
       main(
      
        int
      
       argc, 
      
        char
      
      
        const
      
       *
      
        argv[])


      
      
        27
      
      
        {


      
      
        28
      
      
        int
      
      
         res, i, fifo_fd, fd1;


      
      
        29
      
      
            CLIENTINFO info;


      
      
        30
      
      
        char
      
       buffer[
      
        100
      
      
        ];


      
      
        31
      
      
            signal(SIGKILL, handler);


      
      
        32
      
      
            signal(SIGINT, handler);


      
      
        33
      
      
            signal(SIGTERM, handler);


      
      
        34
      
      
        if
      
      (access(FIFO_NAME, F_OK) == -
      
        1
      
      
        ){


      
      
        35
      
               res = mkfifo(FIFO_NAME, 
      
        0777
      
      
        );


      
      
        36
      
      
        if
      
      (res != 
      
        0
      
      
        ){


      
      
        37
      
                   printf(
      
        "
      
      
        FIFO %s was not created\n
      
      
        "
      
      
        , FIFO_NAME);


      
      
        38
      
      
                    exit(EXIT_FAILURE);


      
      
        39
      
      
                }


      
      
        40
      
      
            }


      
      
        41
      
           fifo_fd =
      
         open(FIFO_NAME, O_RDONLY);


      
      
        42
      
      
        if
      
      (fifo_fd == -
      
        1
      
      
        ){


      
      
        43
      
               printf(
      
        "
      
      
        Could not open %s for read only access\n
      
      
        "
      
      
        , FIFO_NAME);


      
      
        44
      
      
                exit(EXIT_FAILURE);


      
      
        45
      
      
            }


      
      
        46
      
           printf(
      
        "
      
      
        \nServer is rarin to go !\n
      
      
        "
      
      
        );


      
      
        47
      
      
        while
      
      (
      
        1
      
      
        ){


      
      
        48
      
               res = read(fifo_fd, &info, 
      
        sizeof
      
      
        (CLIENTINFO));


      
      
        49
      
      
        if
      
      (res != 
      
        0
      
      
        ){


      
      
        50
      
                   printf(
      
        "
      
      
        Client arrived!!\n
      
      
        "
      
      
        );


      
      
        51
      
                   sprintf(buffer, 
      
        "
      
      
        The result is %d
      
      
        "
      
      , calc(&
      
        info));


      
      
        52
      
                   fd1 = open(info.myfifo, O_WRONLY |
      
         O_NONBLOCK);


      
      
        53
      
                   write (fd1, buffer, strlen(buffer) + 
      
        1
      
      
        );


      
      
        54
      
      
                    close(fd1);


      
      
        55
      
      
                }


      
      
        56
      
      
        57
      
      
            }


      
      
        58
      
      
        return
      
      
        0
      
      
        ;


      
      
        59
      
       }
    


OK!

./server.c &

./client 3 + 5

  看輸出吧!

?

?

Linux系統編程:客戶端-服務器用FIFO進行通信


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 毛片a区| 五月激情久久 | 天天操伊人 | 亚洲电影免费 | 免费精品美女久久久久久久久久 | 欧美黑人狂野猛交老妇 | 国产一区二区三区 | 色综合图 | 综合一区二区三区 | 黄片一级毛片 | 成人亚洲 | 正在播放国产无套露脸 | 精品亚洲永久免费精品 | 精品一区二区三区三区 | 天天插天天干天天射 | 天天夜天干天天爽 | 久久精品一级 | 亚洲欧美日韩国产精品26u | 色婷婷综合久久久中字幕精品久久 | 91伊人| 国产欧美精品亚洲桃花岛 | 国产精品久久久久无码av | 日产乱码卡一卡2卡三卡四麻豆 | 国产黑丝在线播放 | 欧美一级精品片在线看 | 亚洲国产欧洲综合997久久 | 久草精品视频 | 国产免费观看一区 | 特级一级毛片免费看 | 久久国产精品一区二区 | 91精品国产91久久久久久吃药 | 欧美一级网 | 国产精品福利视频免费观看 | 色倩网站| 91福利一区二区在线观看 | 欧美电影网站在线观看影片 | 欧美一区欧美二区 | 日韩不卡在线 | 九九99在线视频 | 久久大香香蕉国产免费网站 | 99福利视频 |