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

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 不是线程安全的函数;

 

相关文章:

  • Yolov5.6增加注意力机制+ByterTrack:目标检测与跟踪
  • FR4 中的色散如何真正影响传播延迟?
  • Linux 文件类型,目录与路径,文件与目录管理
  • 论文分类打榜赛Baseline(2):InternLM昇腾硬件微调实践
  • Linux日志管理和时间管理
  • Cypher 查询语言完全指南(2024最新版)—— Neo4j 图数据库实战教程
  • Linux 信号机制深度解析:从基础概念到实战应用
  • React19源码系列之 事件优先级
  • Qt进阶开发:动画框架的介绍和使用
  • Java是实现大根堆
  • Camera相机人脸识别系列专题分析之十二:人脸特征检测FFD算法之libvega_face.so数据结构详解
  • 群晖Nas - Docker(ContainerManager)上安装GitLab
  • yolo11-seg 推理测试infer
  • 云打包生成的ipa上传构建版本经验分享
  • 【OpenCV】双相机结构光成像与图像交叉融合实现【C++篇】
  • 零基础入门 线性代数
  • 基于区块链的供应链溯源系统:构建与实践
  • 超短脉冲激光自聚焦效应
  • 深度剖析:数据采集如何为【智慧农业 】精准赋能!
  • 如何定期检查和调整螺杆支撑座间隙?
  • 网站快速备案通道/seo兼职怎么收费
  • 一个人做网站 优帮云/营销型公司网站建设
  • 陕西住房和建设部网站首页/培训网站建设
  • 网站网站地图怎么做/免费发布信息网网站
  • 真实的做视频网站/semester
  • 南京江宁网站制作/百度一下你知道