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

2.Socket 编程 UDP

1.UDP网络编程

0.背景知识

自实现IP转化

相关函数理解 

IP相关理解

1. V2版本 - DictServer封装版

实现一个简单的英译汉的网络字典

Dict.hpp

dictionary.txt

InetAddr.hpp

• 在 InetAddr 中,重载一下==方便对用户是否是同一个进行比较

Log.hpp

makefile

Mutex.hpp

UdpClient.cc

UdpServer.cc

UdpServer.hpp

2.V3版本 - 简单聊天室

Cond.hpp(条件变量)

InetAddr.hpp

Log.hpp

makefile

Mutex.hpp

Route.hpp

Thread.hpp

ThreadPool.hpp

UdpClient.cc

 udp 是全双工的。既可以读,也可以写,可以同时读写,不会多线程读写的问题.

• 多线程客户端,同时读取和写入

 

UdpServer.cc

UdpServer.hpp

附录1:

附录2:

 UdpServer.cc中3. 网络服务器对象,提供通信功能

附录(杂):
 

基于 IPv4 的 socket 网络编程,sockaddr_in 中的成员 struct in_addr
sin_addr 表示 32 位 的 IP 地址
但是我们通常用点分十进制的字符串表示 IP 地址,以下函数可以在字符串表示 和
in_addr 表示之间转换;
inet_ntoa 这个函数返回了一个 char*, 很显然是这个函数自己在内部为我们申请了一块
内存来保存 ip 的结果. 那么是否需要调用者手动释放呢?
man 手册上说, inet_ntoa 函数, 是把这个返回结果放到了静态存储区. 这个时候不需要
我们手动进行释放
明确提出 inet_ntoa 不是线程安全的函数;

 

http://www.xdnf.cn/news/13206.html

相关文章:

  • [极客时间]LangChain 实战课 ----- 01|LangChain系统安装和快速入门(2)
  • 3D扫描技术赋能汽车零部件尺寸测量效率提升
  • Mac M4 芯片运行大模型指南,包括模型微调与推理
  • Spring Boot 与 Kafka 的深度集成实践(三)
  • 多模态分类案例实现
  • 可视化如何全方位赋能销售工作
  • Rust 学习笔记:通过 Send 和 Sync trait 实现可扩展并发性
  • 常用的OceanBase调优配置参数
  • Vue 的 v-model 指令详解
  • 2023年全国研究生数学建模竞赛华为杯D题区域双碳目标与路径规划研究求解全过程文档及程序
  • C# 中常用的 字符串截取方法
  • 代码解读——ReferenceNet
  • 深入理解Linux DRM显示子系统:架构、实战项目与关键问题全解析
  • 相机camera开发之差异对比核查二:测试机和对比机的差异提交对比
  • 项目又延期?如何用“灵活IT人力外包”快速补位技术缺口
  • Android高性能音频与图形开发:OpenSL ES与OpenGL ES最佳实践
  • NexusTerminal一款视频移动端的webSSH
  • 人工操舵是如何操作的?介绍人工操舵的经验和规律
  • 云原生核心技术 (4/12): Docker 进阶:镜像优化实战与 Docker Compose 揭秘
  • Python----OpenCV(图像处理——图像的多种属性、RGB与BGR色彩空间、HSB、HSV与HSL、ROI区域)
  • Dual-Port MIPI to HDMI 2.0,4k@60Hz
  • Java + Spring Boot项目枚举(Enum)目录建议
  • Couchbase 可观测性最佳实践
  • 二十、【用户管理与权限 - 篇二】前端交互:实现用户管理界面
  • C++17 std::string_view:性能与便捷的完美结合
  • 【习题】应用程序框架基础
  • 蓝桥杯国赛训练 day3
  • C++ 8.1 内联函数
  • 【Nginx系列】Nginx 负载均衡策略之 least_conn
  • shell脚本--查看应用的cpu 和 内存使用率 并把最新告警内容显示出来