linux多个客户端如何通信_linux实现多个客户端通信进阶
2020.07.31
linux分享
●
●
●
#01#前言
前情回顧:
????在整理上學期資料同時將部分代碼分享,將以代碼書寫時間為時間線,按優化程度逐步發出,代碼均為在linux下c編程。
上回功能:
????由客戶端和服務端組成,可支持多個客戶端之間通信。
本次改進:
新增專線聊天,聊天室,三人聊天群,以及當有人登陸和退出時對全體進行廣播。
????功能說明:quit退出,list查看在線列表,make自由與任意好友聊天,zxlt停留在一個好友發送框里,但可以接收到所有人發你的消息,聊天室與三人聊天同理,一個是三個人的群,一個是大家的群,查看或請求幫助help。
本文分成4部分:
1、圖片演示
2、代碼截圖
3、思路說明
4、下載地址
#OVER#
#02#圖片演示
#OVER#
#03#代碼截圖
頭文件:xxlx.h/*
?* char.h
?*
?*? Created on: 2020年5月22日
?*? ? ? Author: wu
?*/
#ifndef CHAR_H_
#define CHAR_H_
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef struct{
pid_t pid;
char name[64];
int used;//0free 1sued
}client_t;
#define zd 64
typedef struct{
pid_t pid;
char name[128];
char text[1024];;//0free 1sued
}tx_t;
typedef struct{
long type;
tx_t tx;
}tx_msg;
#define tx_sise (sizeof(tx_msg)-sizeof(long))
#define server_key 0x3330001
#define xx_key 0x3330002
typedef struct{
long type;
#define server_login 0x01
#define server_out? ?0x02
#define server_list 0x03
union{
client_t client;
client_t clients[zd];
}data;
}server_msg;
#define server_sise (sizeof(server_msg)-sizeof(long))
#endif /* CHAR_H_ */
#OVER#
#04#思路說明
思路說明
1、服務器維護一個在線列表,記錄登錄客戶端的pid和用戶名,以pid作為客戶端之間的通信類型
2、客戶端使用二個線程,一個接受來自其它客戶端的消息,一個接受來自服務器的消息,專線聊天則是在聊天基礎上加個while循環,聊天室相當于對全體的廣播,三人聊天群則是在專線聊天基礎上融合聊天室,支持向多人發送消息。
3、服務器定義有三種消息隊列數據類型,分別是登陸,退出,請求在線列表;在接受到請求在線列表后,會以請求者的pid為消息類型發送回去,同時有新的人登陸、退出時會向全部客戶端進行廣播。
#OVER#
#05#結尾->獲取方式
下載地址:
公眾號內回復【char3】即可獲取下載鏈接
#OVER#
點擊下方圖片進入linux討論區
●
●
●
視頻來源:科學大世界
文字:科學大世界
圖片:科學大世界
文章封面圖:網絡
如有侵權請到公眾號內意見反饋處反饋
???
掃碼關注我們
覺得不錯點個在看唄
2020/07/31
總結
以上是生活随笔為你收集整理的linux多个客户端如何通信_linux实现多个客户端通信进阶的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的应用不是以下哪种_pyth
- 下一篇: node2vec文献出处_社交网络分析(