![e87d09043f2890d747da4a1c0460d0d6.png](https://i-blog.csdnimg.cn/blog_migrate/d5040686c37546dd8fa324a4dba46e0c.png)
![e87d09043f2890d747da4a1c0460d0d6.png](https://i-blog.csdnimg.cn/blog_migrate/d5040686c37546dd8fa324a4dba46e0c.png)
![e87d09043f2890d747da4a1c0460d0d6.png](https://i-blog.csdnimg.cn/blog_migrate/d5040686c37546dd8fa324a4dba46e0c.png)
![e87d09043f2890d747da4a1c0460d0d6.png](https://i-blog.csdnimg.cn/blog_migrate/d5040686c37546dd8fa324a4dba46e0c.png)
2020.07.22
linux分享
●
●
●
#01#前言
前言:
在整理上学期资料同时将部分代码分享,将以代码书写时间为时间线,按优化程度逐步发出,代码均为在linux下c编程。
本次内容:
由客户端和服务端组成,可支持多个客户端之间通信
本文分成4部分:
1、图片演示
2、代码截图
3、思路说明
4、下载地址
#OVER#
![e8714324599d0be7254492cb950c2cb4.png](https://i-blog.csdnimg.cn/blog_migrate/3fd57e776ca4c772f5cee2407badbce8.png)
#02#图片演示
![1394652657d33786bf28a4058bd328b8.png](https://i-blog.csdnimg.cn/blog_migrate/2f09e0eb6039d446d07aa898c7cd1a9a.png)
#OVER#
![e8714324599d0be7254492cb950c2cb4.png](https://i-blog.csdnimg.cn/blog_migrate/3fd57e776ca4c772f5cee2407badbce8.png)
#03#代码截图
![0025ce0ecfa3bd3571b59a3854ed3622.png](https://i-blog.csdnimg.cn/blog_migrate/7e72a26069fc4c0d76a199af4ebca421.jpeg)
![19a80500bb9cfae2c3efda021ebf9c94.png](https://i-blog.csdnimg.cn/blog_migrate/ef28b6d05904a23bd78cf318fda435f2.jpeg)
/*
* 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[64];
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#
![e8714324599d0be7254492cb950c2cb4.png](https://i-blog.csdnimg.cn/blog_migrate/3fd57e776ca4c772f5cee2407badbce8.png)
#04#思路说明
思路说明
1、服务器维护一个在线列表,记录登录客户端的pid和用户名,以pid作为客户端之间的通信类型
2、客户端使用线程接受来自其它客户端的消息
3、服务器定义有三种消息队列数据类型,分别是登录,退出,请求在线列表;在接受到请求在线列表后,会以请求者的pid为消息类型发送回去。
#OVER#
![e87d09043f2890d747da4a1c0460d0d6.png](https://i-blog.csdnimg.cn/blog_migrate/d5040686c37546dd8fa324a4dba46e0c.png)
![e87d09043f2890d747da4a1c0460d0d6.png](https://i-blog.csdnimg.cn/blog_migrate/d5040686c37546dd8fa324a4dba46e0c.png)
![e87d09043f2890d747da4a1c0460d0d6.png](https://i-blog.csdnimg.cn/blog_migrate/d5040686c37546dd8fa324a4dba46e0c.png)
#05#结尾->获取方式
![e8714324599d0be7254492cb950c2cb4.png](https://i-blog.csdnimg.cn/blog_migrate/3fd57e776ca4c772f5cee2407badbce8.png)
下载地址:
公众号内回复【char2】即可获取下载链接
#OVER#
点击下方图片进入linux讨论区
●
●
●
视频来源:科学大世界
文字:科学大世界
图片:科学大世界
文章封面图:网络
如有侵权请到公众号内意见反馈处反馈
???
![57984301d56a0d8b9522ec7907ac98fd.png](https://i-blog.csdnimg.cn/blog_migrate/6cfd0392aa18d33bf366aabc2bacc7be.jpeg)
扫码关注我们
觉得不错点个在看呗
2020/07/22