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條評論
主站蜘蛛池模板: 精品无人区一区二区三 | 欧美三级视频在线播放 | 奇米影视在线 | 亚洲成人在线网 | 成人免费视频在线观看 | www.久久精品 | 免费观看的av | 久久久9999久久精品小说 | 免费福利视频在线观看 | 欧美无遮挡一区二区三区 | 9久9久女女热精品视频免费观看 | 涩涩操| 亚洲精品欧美一区二区三区 | 一区二区三区在线视频播放 | 日韩久久久久久 | 精品在线视频一区 | 国产成人免费全部网站 | 亚洲欧美中文日韩二区一区 | 成年人在线播放视频 | 亚洲人网站 | 亚洲第一成人影院 | 一级成人生活片免费看 | 色99视频| 青娱乐精品在线 | 亚洲欧美在线观看一区二区 | 久久观看午夜精品 | 国产精品极品美女自在线看免费一区二区 | 超97在线观看精品国产 | 成人国产一区二区三区 | 天堂中文网 | 精品伊人久久大线蕉地址 | 天天草天天干天天 | 国产亚洲精品xxx | 日韩欧美天堂 | 91视频网页版 | 国产精品成人国产乱一区 | 亚洲精品久久一区二区三区四区 | 欧美亚洲激情在线 | 天天躁日日躁aaaa视频 | 久草视 | 亚洲天天更新 |