Connection many client fifo to one server fifo

扶醉桌前 提交于 2020-01-16 14:09:07

问题


have to write two programs (a client and a server) which will do chatting with each other using FIFOs (to pass message from one process to another). The server process creates a SERVER_FIFO to receive client connections only. The server maintains the list of online clients. Each client creates its own CLIENT_FIFO to receive commands from server to be executed at client using system() system call. You can use getpid() system call to retrieve client’s process id to be concatenated in the CLIENT_FIFO name.

I only to create 2 fifo that communicate with each other

SERVER

// C program to implement one side of FIFO 
// This side writes first, then reads 
#include <stdio.h> 
#include <string.h> 
#include <fcntl.h> 
#include <sys/stat.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main() 
{ 
    int fd; 

    char * myfifo = "/tmp/myfifo"; 

    mkfifo(myfifo, 0666); 

    char arr1[80], arr2[80]; 
    while (1) 
    { 

        fd = open(myfifo, O_WRONLY); 

        fgets(arr2, 80, stdin); 

        write(fd, arr2, strlen(arr2)+1); 
        close(fd); 

        // Open FIFO for Read only 
        fd = open(myfifo, O_RDONLY); 

        // Read from FIFO 
        read(fd, arr1, sizeof(arr1)); 

        // Print the read message 
        printf("User2: %s\n", arr1); 
        close(fd); 
    } 
    return 0; 
} 

==================================================================

CLIENT

// C program to implement one side of FIFO 
// This side reads first, then reads 
#include <stdio.h> 
#include <string.h> 
#include <fcntl.h> 
#include <sys/stat.h> 
#include <sys/types.h> 
#include <unistd.h> 

int main() 
{ 
    int fd1; 

    // FIFO file path 
    char * myfifo = "/tmp/myfifo"; 

    mkfifo(myfifo, 0666); 

    char str1[80], str2[80]; 
    while (1) 
    { 
        // First open in read only and read 
        fd1 = open(myfifo,O_RDONLY); 
        read(fd1, str1, 80); 

        // Print the read string and close 
        printf("User1: %s\n", str1); 
        close(fd1); 


        fd1 = open(myfifo,O_WRONLY); 
        fgets(str2, 80, stdin); 
        write(fd1, str2, strlen(str2)+1); 
        close(fd1); 
    } 
    return 0; 
} 

来源:https://stackoverflow.com/questions/58812591/connection-many-client-fifo-to-one-server-fifo

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!