当前位置: 首页 > news >正文

(1)udp双向通信(2)udp实现文件复制(3)udp实现聊天室

一.udp双向通信

1.fork进程实现双向通信

【1】head.h

【2】client客户端

(1)父进程从键盘获取字符串

(2)输入quit,发送结束子进程信号

(3)exit退出父进程

(1)子进程接受信息

(2)getppid用于退出父进程

【3】server服务器

注意:在通信前,客户端需要先发一条消息用于服务器获取客户端信息

(1)父进程发送信息,输入quit发送信号结束子进程并退出

(2)子进程接受信息,输入信息获取父进程pid并结束父子进程

2.pthread线程实现udp双向通信

【1】client客户端

注意:定义全局变量sockaddr_in不用向线程传参.

【2】server服务器

同样,服务器需要先获取客户端信息

二,udp实现文件复制

1.client客户端

(1)首先,向服务器传入文件名

(2)读取文件,进行传输

打开新文件并写入

三.udp实现聊天室

1.实现思路梳理

2.head.h

(1)定义结构体msg_t用于存储客户端数据

   type:用于存储客户端状态

   name:用于存储客户端名字

  text:用于存储需要发送的文本

(2)MSG_TYPE分为进入,发送,退出三种状态

3.client客户端

(1)记录状态为进入,获取名字,初始化文本

(2) 发送客户端信息,由服务器接受后向其他客户端发送接入信息

创建线程进行读写

线程1:(1)在读操作里定义结构体用于读取其他客户端信息

(2)读取服务器发送来的其他客户端信息

(3)打印发送人和发送消息

注:定义两个全局变量后,不用向线程传参

线程2:(1)从键盘获取发送消息

(2)

【1】如果是quit就将状态变为QUIT,向服务器发送结构体,服务器读取后向其他客户端发送退出信息,并删除客户端信息

【2】如果是其他消息,向服务器发送,由服务器发送给其他客户端

4.server服务器

(1)定义能接入的客户端的宏为10

(2)定义结构体的数组用于接受这些客户端的信息

(1)接收接入的客户端信息

(2)读取客户端状态

【1】LOGIN接入状态

1.将信息记录在结构体的数组中

2.向其他客户换发送接入信息

注:其他客户端为接入状态,且将存储的地址与客户端进行对比,向除了自己的其他客户端发送信息

【2】CHAT状态

直接发送结构体信息

【3】QUIT状态

(1)向其他客户端发送退出信息

(2)清空客户端结构体信息

http://www.lryc.cn/news/546824.html

相关文章:

  • el-table 手动选择展示列
  • 零基础学习之——深度学习算法介绍01
  • 【开源项目】好用的开源项目记录(持续更新)
  • Django:文件上传时报错in a frame because it set ‘X-Frame-Options‘ to ‘deny‘.
  • Linux常用指令学习笔记
  • FastGPT 引申:基于 Python 版本实现 Java 版本 RRF
  • 面试八股文--数据库基础知识总结(3)MySQL优化
  • 汇编前置知识学习 第11-13天
  • springboot在业务层校验对象/集合中字段是否符合要求
  • python二级考试中会考到的第三方库
  • Linux中死锁问题的探讨
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-2.3.1 避免频繁更新(Update by Query的代价)
  • 【Python项目】基于Python的书籍售卖系统
  • spring boot + vue 搭建环境
  • Linux下的shell指令(一)
  • JS禁止web页面调试
  • GIt分支合并
  • Sqli-labs
  • unreal engine gameplay abiliity 获取ability的cooldown剩余时间
  • 【GenBI优化】提升text2sql准确率:建议使用推理大模型,增加重试
  • 【六祎 - Note】SQL备忘录;DDL,DML,DQL,DCL
  • 高频 SQL 50 题(基础版)_1341. 电影评分
  • JavaScript 变量命名规范
  • 解决 uView-UI和uv-ui 中 u-tabs 组件在微信小程序中出现横向滚动条的问题
  • 20250304解决在飞凌的OK3588-C的Linux R4下解决使用gstreamer保存的mp4打不开
  • build gcc
  • 【每日论文】How far can we go with ImageNet for Text-to-Image generation?
  • STM32 两个单片机之间的通信
  • Linux 下使用traceroute来进行网络诊断分析
  • 基于vue框架的游戏商城系统cq070(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。