亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用fifo管道實現多人聊天

2019-11-08 02:51:20
字體:
來源:轉載
供稿:網友

用fifo管道實現多人聊天

最近學習了多路IO,多線程,信號注冊函數,管道通信等內容。于是通過以上技術,寫了一個通過管道通信的多人聊天小程序。程序還存在很多不足,但是勉強能實現需要的功能。先貼上,日后完善。 先介紹程序大致功能,再貼上代碼: 1.啟動服務器程序,用epoll進行監聽客戶端事件發生,同時創建一個文件寫入服務器端的pid,用于客戶端信號發送到服務器. 2.再啟動客戶端程序,創建讀寫管道。同時發送信號到服務器,以便讓服務器連接管道。 3.連接成功后進行通信 setname xxx 用于創建用戶名 to xxx:buf 給指定xxx用戶發送buf消息 to all:buf 給所有用戶發送buf消息

服務端程序:

#include<stdio.h>#include<errno.h>#include<signal.h>#include<sys/epoll.h>#include<fcntl.h>#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>#include<stdlib.h>#include<string.h>#include<string>#include<map>#include<iostream>using namespace std;typedef struct chat_user_t{//客戶信息結構體 string name; int fd_read; int fd_write;}chat_user_t;map<string,chat_user_t*> users;//保存客戶信息int epollfd;const char* errmsg[] = {//出錯信息 "ok", "user not exit", "unknown command"};//創建文件存儲服務器進程idvoid create_pid_file(char* filename){ char buf[1024]; s客戶端程序#include <stdio.h>#include <signal.h>#include <pthread.h>#include <fcntl.h>#include <sys/stat.h>#include <sys/types.h>#include <errno.h>#include <unistd.h>#include <string.h>#include <unistd.h>#include <stdlib.h>pid_t get_server_pid(){ int fd = open("myserver.run", O_RDWR); char buf[1024]; read(fd, buf, sizeof(buf)); close(fd); return (pid_t)atoi(buf);}// 等待服務器發送數據void* thread_recv(void* ptr){ int fd_read = (int)(intptr_t)ptr; char buf[4096]; while(1) { int ret = read(fd_read, buf, sizeof(buf)); if(ret == 0) // 寫端已經被關閉了 { exit(0); // 整個進程退出 } if(ret < 0) { if(errno == EINTR) // 讀文件失敗 continue; exit(0); // 讀文件錯誤 } printf("%s/n", buf); // 要求buf不帶 }}int main(){ // 創建兩個管道文件 pid_t pid = getpid(); char buf1[4096]; sprintf(buf1, "%d-1", (int)pid); mkfifo(buf1, 0777); char buf2[4096]; sprintf(buf2, "%d-2", (int)pid); mkfifo(buf2, 0777); // 發送信號給服務器,我來了 pid = get_server_pid();// printf("%d/n",(int)pid); // 發送信號告訴服務器,新的客戶端加入 union sigval v; sigqueue(pid, SIGRTMIN, v); // 打開管道文件,一定在發送信號之后 // 讓客戶端和服務器一起打開管道,否則會阻塞 int fd_write = open(buf1, O_WRONLY); int fd_read = open(buf2, O_RDONLY); // 創建一個線程,負責信息的接收 pthread_t tid; pthread_create(&tid, NULL, thread_recv, (void*)(intptr_t)fd_read); // 等待用戶輸入 while(1) { char buf[4096]; fgets(buf, sizeof(buf), stdin); buf[strlen(buf)-1] = 0; if(strlen(buf) == 0) // 空敲回車的處理 continue; // setname xue // to yy: hello yy write(fd_write, buf, strlen(buf)+1); // 帶上/0 }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
美女久久久久久久| 久久久免费高清电视剧观看| 国产精品欧美一区二区| 57pao成人国产永久免费| 日韩在线观看免费全| 久久久国产精彩视频美女艺术照福利| 欧美夫妻性视频| 亚洲风情亚aⅴ在线发布| 日韩最新av在线| 日本高清不卡在线| 91人人爽人人爽人人精88v| 欧美一区二区大胆人体摄影专业网站| 国产精品美女久久| 亚洲精品www久久久| 亚洲iv一区二区三区| 久久五月天综合| 欧美日韩在线一区| 欧美性猛交xxxx富婆弯腰| 亚洲级视频在线观看免费1级| 欧美日韩美女在线观看| 亚洲在线免费看| 91久久综合亚洲鲁鲁五月天| 亚洲成年网站在线观看| 亚洲天堂视频在线观看| 亚洲精品视频中文字幕| 中文字幕精品久久久久| 欧美激情亚洲视频| 欧美电影免费观看电视剧大全| 欧美国产日韩一区二区三区| 成人激情在线播放| 久久夜色精品国产亚洲aⅴ| 色爱av美腿丝袜综合粉嫩av| 欧美国产日韩一区二区| 欧美乱大交xxxxx| 中文字幕在线观看日韩| 国产精品久久久久久av| 8050国产精品久久久久久| 久久在精品线影院精品国产| 日韩一区二区欧美| 亚洲一区二区三区乱码aⅴ| 欧美午夜无遮挡| 色综合久久久久久中文网| 国产欧美精品在线| 国产亚洲精品美女久久久久| 日韩成人中文字幕| 亚洲的天堂在线中文字幕| 亚洲国产精品推荐| 国产热re99久久6国产精品| 日本高清+成人网在线观看| 亚洲黄色免费三级| 欧美老女人bb| 日韩欧美大尺度| 精品国产一区二区三区在线观看| 自拍偷拍亚洲在线| 91欧美精品成人综合在线观看| 国产一区二区成人| 国产日韩在线观看av| 国产亚洲精品高潮| 欧洲中文字幕国产精品| 精品视频久久久久久| 亚洲国产精品久久久| 欧美性生活大片免费观看网址| 亚洲开心激情网| 久久精品青青大伊人av| 亚洲欧洲在线播放| 伊人激情综合网| 色与欲影视天天看综合网| 欧美性生活大片免费观看网址| 精品久久中文字幕| 欧美国产一区二区三区| 性视频1819p久久| 国产91精品久久久久久久| 国产精品人人做人人爽| 国产精品1234| 91在线|亚洲| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲最新av在线| 午夜精品99久久免费| 欧美亚洲激情视频| 国产精品一区二区3区| 精品久久久久久久久久久| 国产成人91久久精品| 91啪国产在线| 亚洲精品白浆高清久久久久久| 欧美成人剧情片在线观看| 欧美成人亚洲成人| 精品久久久久久亚洲国产300| 欧美日韩在线看| 激情成人在线视频| 日韩精品在线视频观看| 久久不射电影网| 日韩欧美精品网址| 欧美激情综合色| 丁香五六月婷婷久久激情| 97视频免费观看| 上原亚衣av一区二区三区| 亚洲国产成人精品久久| 欧美精品电影免费在线观看| 亚洲欧美综合图区| 日韩美女视频在线观看| 国产欧美日韩视频| 中文字幕亚洲综合久久筱田步美| 国产精品狠色婷| 亚洲淫片在线视频| 国产日韩在线一区| 国内精品久久久久久中文字幕| 亚洲国产成人一区| 日韩精品福利在线| 成人免费观看49www在线观看| 97精品国产97久久久久久| 丝袜美腿精品国产二区| 亚洲一区精品电影| 亚洲va男人天堂| 4438全国成人免费| 最新91在线视频| 国产精品一区二区三区久久| 欧美性视频精品| 欧美日韩美女视频| 亚洲丁香婷深爱综合| 亚洲国产成人精品女人久久久| 国产拍精品一二三| 欧美大片免费观看| 日韩美女av在线| 疯狂欧美牲乱大交777| 欧美精品电影免费在线观看| 国产精品精品一区二区三区午夜版| 亚洲精品一区中文字幕乱码| 伊人久久精品视频| 精品成人国产在线观看男人呻吟| 亚洲日韩欧美视频一区| 欧美高清电影在线看| 视频一区视频二区国产精品| 91精品久久久久久久久青青| 国产精品视频在线播放| 国产精品黄页免费高清在线观看| 亚洲福利视频免费观看| 国产精品黄色影片导航在线观看| 亚洲成人教育av| 日韩欧美黄色动漫| 在线不卡国产精品| 日韩欧美在线视频| 综合136福利视频在线| 国产精品自拍偷拍| 国产日韩欧美中文| 欧美裸体视频网站| 亚洲国产成人精品一区二区| 亚洲欧洲在线免费| 色视频www在线播放国产成人| 久久视频免费观看| 日韩免费视频在线观看| 91九色视频导航| 国产成+人+综合+亚洲欧美丁香花| 亚洲成人性视频| 国产一区二区三区在线播放免费观看| 亚洲午夜未满十八勿入免费观看全集| 亚洲精品国产精品国自产观看浪潮| www.日韩系列| 日韩在线视频网| 26uuu另类亚洲欧美日本一| 日韩成人av在线播放| 日韩在线播放视频| 精品美女久久久久久免费| 欧美美最猛性xxxxxx| 亚洲第一天堂av|