linux pid t 头文件_linux实现多个客户端通信进阶

4b00286daf5c2e41a8053a31fc8fa015.png 4b00286daf5c2e41a8053a31fc8fa015.png 4b00286daf5c2e41a8053a31fc8fa015.png 4b00286daf5c2e41a8053a31fc8fa015.png

2020.09.11

linux分享

#01#前言

b6f61cfdea1801a41f0d4ae3a2ac8459.png

b6f61cfdea1801a41f0d4ae3a2ac8459.png

前情回顾:

    在整理上学期资料同时将部分代码分享,将以代码书写时间为时间线,按优化程度逐步发出,代码均为在linux下c编程。

上回功能:

    由客户端和服务端组成,可支持多个客户端之间通信。

新增专线聊天,聊天室,三人聊天群,以及当有人登陆和退出时对全体进行广播。

    功能说明:quit退出,list查看在线列表,make自由与任意好友聊天,zxlt停留在一个好友发送框里,但可以接收到所有人发你的消息,聊天室与三人聊天同理,一个是三个人的群,一个是大家的群,查看或请求帮助help。

本次改进:

    新增勿扰和挂机模式,优化服务器端提示。

    勿扰和退出勿扰是一套组合,勿扰时不接收聊天消息但接收系统消息,退出勿扰后,原来没接收到的消息都可以接收到,挂机:gj不接收任何消息包括系统消息,退出后会重新接收。

本文分成4部分

1、图片演示

2、代码截图

3、思路说明

4、下载地址

#OVER#

0fcb18dd723d8f8398c011fdbbb5e882.png

#02#图片演示

137066b3ba1a446a149bea96fe2b5b58.png d8ee9fc506be9a93808fb496c97bdfbd.png

#OVER#

0fcb18dd723d8f8398c011fdbbb5e882.png

#03#代码截图

053573d6e8de12c19095537e8ca9e105.png 74adf1b9a48847541dd6c40d258da40c.png 头文件: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#

0fcb18dd723d8f8398c011fdbbb5e882.png

#04#思路说明

思路说明

1、服务器维护一个在线列表,记录登录客户端的pid和用户名,以pid作为客户端之间的通信类型

2、客户端使用二个线程,一个接受来自其它客户端的消息,一个接受来自服务器的消息,专线聊天则是在聊天基础上加个while循环,聊天室相当于对全体的广播,三人聊天群则是在专线聊天基础上融合聊天室,支持向多人发送消息。

3、服务器定义有三种消息队列数据类型,分别是登陆,退出,请求在线列表;在接受到请求在线列表后,会以请求者的pid为消息类型发送回去,同时有新的人登陆、退出时会向全部客户端进行广播。

4、勿扰则是退出接收客户端消息的线程就可以了;挂机在勿扰的基础上把接收系统消息的线程也推出了,也就是退出二个线程。退出这二个模式则是重新打开这二个线程。

#OVER#

4b00286daf5c2e41a8053a31fc8fa015.png 4b00286daf5c2e41a8053a31fc8fa015.png 4b00286daf5c2e41a8053a31fc8fa015.png

#05#结尾->获取方式

0fcb18dd723d8f8398c011fdbbb5e882.png

下载地址:

公众号内回复【char6】即可获取下载链接

#OVER#

视频来源:科学大世界

文字:科学大世界

图片:科学大世界

文章封面图:网络

如有侵权请到公众号内意见反馈处反馈

???

7422b371703822b3d966eb89152e26cb.png

扫码关注我们

觉得不错点个在看呗

2020/09/11

欢迎在下方留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值