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实现多个客户端通信进阶相关推荐
- Linux C++服务器项目——网络编程1 (socket通信,服务端,客户端)
牛客 C++高并发服务器开发 参考笔记 1.MAC地址 2 IP地址 2.1 简介 2.2 IP地址编址方式 2.3 子网掩码 3 端口 3.1 简介 3.2 端口类型 4 网络模型 4.1 OSI七 ...
- linux下用C语言实现TCP/IP服务器与客户端互相发送数据的socket编程
linux下用C语言实现TCP/IP服务器与客户端互相发送数据的socket编程 server.c #include <sys/stat.h>#include <fcntl.h> ...
- Linux下编写UDP/TCP版本的服务器和客户端的流程
Linux下编写UDP/TCP版本的服务器和客户端的流程 文章目录 Linux下编写UDP/TCP版本的服务器和客户端的流程 一:UDP和TCP的区别 二.UDP编写服务器的步骤 三.UDP编写客户端 ...
- Linux C/C++编程:netstat分析tcp状态转移(socket通信)
TCP 服务器 #include <stdlib.h> #include <stdio.h> #include <sys/socket.h> #include &l ...
- Linux系统下实现基于TCP/IP协议的简单Socket通信
Linux系统下实现基于TCP/IP协议的简单Socket通信 网络套接字Socket Socket概念 主机字节序和网络字节序 Sockaddr地址结构 Socket实现客户端.服务端通信 服务端程 ...
- android socket通信如何抓取,安卓Socket通信实例(客户端、服务端)
安卓Socket通信实例 本文摘自:https://whatsblog.icu/index.php/Android/17.html 1.Socket通信必须知道的地方 1.首先,Socket通信采用T ...
- c++socket多个客户端通过不同端口与一个服务端通信_手写RPC,深入底层理解整个RPC通信...
一.前言 RPC,远程过程调用,调用远程方法像调用本地方法一样.RPC交互分为客户端和服务端,客户端调用服务端方法,服务端接收数据并打印到控制台,并response响应给客户端. RPC和HTTP的联 ...
- linux 进程和线程或线程和线程之间通过管道通信(pipe)
linux 进程和线程或线程和线程之间通过管道通信(pipe) 转自:http://blog.csdn.net/robertkun/article/details/8095331 线程间通信: [cp ...
- cocos2d-LUA逆向之修改客户端app,实时获取app解密后通信数据
本文中,将以宝博.apk为例.基于前面 解密lua脚本与 解密lua资源,我们为实现修改客户端app,实时获取app解密后通信数据,应分析修改app端的lua脚本,然后按原app加密方式打包修改后的l ...
最新文章
- 关于40位MD5加密的破解
- 第85讲:Scala中For表达式的强大表现力实战
- jquery设置滚动条距离页面顶部的高度
- ubuntu 16.04 + apache2 将php7.1 切换到 php7.3
- python判断素数程序_使用面向对象方法检查素数的Python程序
- wince系统usb刷机工具_中兴B860AV1.2-S905L刷机救砖教程,喜欢的分享一下
- 基础 - jQuery
- android andbase,andbase
- mysql数据库中文选什么数据类型_Mysql 数据类型及选择原则
- 汇编语言:基本指令详解
- 含有共轭复数根的Jordan分解
- 北斗卫星短信通信与定位详解
- ArcGIS提取面数据中心线
- php 跳转qq群代码_QQ群一键强制加群API源代码
- GLSL里的矩阵对向量的乘法与OpenGL里用数组生成矩阵进行向量乘法的非直觉不一致
- CSS——CSS盒子模型(重点※)
- 免费开源的云尚发卡V1.5.7
- 北斗导航开始提供全球服务;个人所得税 App 已上线
- EIE稀疏矩阵乘法硬件模拟
- Tim Sweeney解释为什么Unreal Engine 4全面转向C++