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实现多个客户端通信进阶相关推荐

  1. 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七 ...

  2. linux下用C语言实现TCP/IP服务器与客户端互相发送数据的socket编程

    linux下用C语言实现TCP/IP服务器与客户端互相发送数据的socket编程 server.c #include <sys/stat.h>#include <fcntl.h> ...

  3. Linux下编写UDP/TCP版本的服务器和客户端的流程

    Linux下编写UDP/TCP版本的服务器和客户端的流程 文章目录 Linux下编写UDP/TCP版本的服务器和客户端的流程 一:UDP和TCP的区别 二.UDP编写服务器的步骤 三.UDP编写客户端 ...

  4. Linux C/C++编程:netstat分析tcp状态转移(socket通信)

    TCP 服务器 #include <stdlib.h> #include <stdio.h> #include <sys/socket.h> #include &l ...

  5. Linux系统下实现基于TCP/IP协议的简单Socket通信

    Linux系统下实现基于TCP/IP协议的简单Socket通信 网络套接字Socket Socket概念 主机字节序和网络字节序 Sockaddr地址结构 Socket实现客户端.服务端通信 服务端程 ...

  6. android socket通信如何抓取,安卓Socket通信实例(客户端、服务端)

    安卓Socket通信实例 本文摘自:https://whatsblog.icu/index.php/Android/17.html 1.Socket通信必须知道的地方 1.首先,Socket通信采用T ...

  7. c++socket多个客户端通过不同端口与一个服务端通信_手写RPC,深入底层理解整个RPC通信...

    一.前言 RPC,远程过程调用,调用远程方法像调用本地方法一样.RPC交互分为客户端和服务端,客户端调用服务端方法,服务端接收数据并打印到控制台,并response响应给客户端. RPC和HTTP的联 ...

  8. linux 进程和线程或线程和线程之间通过管道通信(pipe)

    linux 进程和线程或线程和线程之间通过管道通信(pipe) 转自:http://blog.csdn.net/robertkun/article/details/8095331 线程间通信: [cp ...

  9. cocos2d-LUA逆向之修改客户端app,实时获取app解密后通信数据

    本文中,将以宝博.apk为例.基于前面 解密lua脚本与 解密lua资源,我们为实现修改客户端app,实时获取app解密后通信数据,应分析修改app端的lua脚本,然后按原app加密方式打包修改后的l ...

最新文章

  1. 关于40位MD5加密的破解
  2. 第85讲:Scala中For表达式的强大表现力实战
  3. jquery设置滚动条距离页面顶部的高度
  4. ubuntu 16.04 + apache2 将php7.1 切换到 php7.3
  5. python判断素数程序_使用面向对象方法检查素数的Python程序
  6. wince系统usb刷机工具_中兴B860AV1.2-S905L刷机救砖教程,喜欢的分享一下
  7. 基础 - jQuery
  8. android andbase,andbase
  9. mysql数据库中文选什么数据类型_Mysql 数据类型及选择原则
  10. 汇编语言:基本指令详解
  11. 含有共轭复数根的Jordan分解
  12. 北斗卫星短信通信与定位详解
  13. ArcGIS提取面数据中心线
  14. php 跳转qq群代码_QQ群一键强制加群API源代码
  15. GLSL里的矩阵对向量的乘法与OpenGL里用数组生成矩阵进行向量乘法的非直觉不一致
  16. CSS——CSS盒子模型(重点※)
  17. 免费开源的云尚发卡V1.5.7
  18. 北斗导航开始提供全球服务;个人所得税 App 已上线
  19. EIE稀疏矩阵乘法硬件模拟
  20. Tim Sweeney解释为什么Unreal Engine 4全面转向C++

热门文章

  1. CSAPP第4章家庭作业参考答案
  2. 知云文献翻译登录时不显示二维码,显示二维码后扫描登录不跳转解决方案
  3. (12)调用门阶段测试
  4. GetLogicalDriveStrings FindFirstVolume和FindNextVolume
  5. php内核分析-fpm和df的问题思考
  6. Windows进程与线程学习笔记(六)—— 线程切换
  7. 设计模式C++实现(5)——原型模式、模板方法模式
  8. Cento7 PHP5.6 升级 PHP7.0.0
  9. 3、绘制E-R图:数据库概要设计阶段
  10. 【PAT乙级】1058 选择题 (20 分)