linux下使用管道實現乙個簡單的伺服器 客戶端

2021-07-07 08:14:36 字數 1591 閱讀 9648

直接上原始碼

首先是用到的資料結構和標頭檔案的宣告和定義

//包含客戶端和伺服器程式都會用到的資料結構等。為了方便使用,

//也包含了必要的系統標頭檔案

#include

#include

#include

#include

#include

#include

#include

#include

#define server_fifo_name "/tmp/serv_fifo"

#define client_fifo_name "/tmp/cli_%d_fifo"

#define buffer_size 20

struct data_to_pass_st;

伺服器端的**:

#include 

#include"client.h"

#include

using

namespace

std;

//在伺服器程式中,我們建立並開啟伺服器管道.被設定為唯讀的阻塞模式

//在稍作袖子後,伺服器開始讀取客戶端發來的資料,這些資料是採用data_to_pass_st結構

int main()

sleep(10);

dosprintf(client_fifo , client_fifo_name , my_data.client_pid);

//以只寫的方式開啟客戶通道,把經過處理的資料傳送出去。最後,關閉伺服器管道檔案的檔案描述符,刪除fifo檔案,退出程式

client_fifo_fd = open(client_fifo , o_wronly);

if(client_fifo_fd != -1)

}}while(read_res > 0);

close(server_fifo_fd);

unlink(server_fifo_name);

exit(exit_success);

//return 0;

}

客戶端的**:

#include"client.h"

#include

int main()

my_data.client_pid = getpid();

sprintf(client_fifo , client_fifo_name , my_data.client_pid);

if(mkfifo(client_fifo , 0777) == -1)

//這部分有5次迴圈,在每次迴圈中,客戶將資料傳送給伺服器,然後開啟客戶fifo(唯讀,阻塞模式)b並讀回資料。在程式的最後,關閉伺服器fifo並將客戶端的fifo檔案從系統中刪除

for(times_to_send = 0 ; times_to_send < 5 ; times_to_send++)

close(client_fifo_fd);}}

close(server_fifo_fd);

unlink(client_fifo);

exit(exit_success);

}

利用linux管道實現乙個單向聊天工具

step 1 mkfifo fifo1 step 2 vim readfifo.c新增如下 readfifo檔案 include include include include include include include include int main close fd return 0 儲存...

利用linux管道實現乙個單向聊天工具

step 1 mkfifo fifo1 step 2 vim readfifo.c 新增如下 readfifo檔案 include include include include include include include include int main close fd return 0 儲...

Linux下實現乙個簡易的shell指令碼

在linux系統下我們都是通過在命令列敲擊一些命令來實現一些我們想要的操作,只要了解一些程序程式替換的知識,我們也可以自己寫乙個簡易的shell。什麼是shell 指令碼 最簡單的解釋,乙個shell 指令碼就是乙個包含一系列命令的檔案。shell 讀取這個檔案,然後執行檔案中的所有命令,就好像這些...