35 网络相关函数(三)——live555源码阅读(四)网络
35 网络相关函数(三)——live555源码阅读(四)网络
本文由乌合之众 lym瞎编,欢迎转载 blog.cnblogs.net/oloroso
本文由乌合之众 lym瞎编,欢迎转载 my.oschina.net/oloroso
简介#
网络相关函数是一系列用于操作网络数据的函数。在多个文件中都有相关的函数的定义。还有一些函数是系统socket API
相关函数,就不提了。
这一系列的函数大多有一个特点,需要一个UsageEnvironmet&型的参数。
这些方法大多在live555sourcecontrol\groupsock\include\GroupsockHelper.hh
中声明。
5)NoReuse不重用地址类#
env.groupsockPriv->reuseFlag
成员用于指示在setupDatagramSocket
函数中是否设置允许重用本地地址和端口。
构造的时候为构造的时候为env.groupsockPriv
分配对象,并设置groupsockPriv
对象的reuseFlag=0
即不重用标识。默认情况下reuseFlag==1
,标识可重用。
// 构造的时候为env.groupsockPriv分配对象 // 并设置groupsockPriv对象的reuseFlag=0 NoReuse::NoReuse(UsageEnvironment& env) : fEnv(env) { groupsockPriv(fEnv)->reuseFlag = 0; }
只要env.groupsockPriv->socketTable==NULL
成立,就释放env.groupsockPriv
指向对象。
// 若groupsockPriv对象的socketTable==NULL // 析构的时候为env.groupsockPriv释放对象 NoReuse::~NoReuse() { groupsockPriv(fEnv)->reuseFlag = 1; reclaimGroupsockPriv(fEnv); }
6)initializeWinsockIfNecessary 根据需要初始化winSock#
这个函数只用于windows
系列操作系统。
windows
网络编程是一件麻烦事,其必须要先进行一系列初始化
的操作。
如果不是windows平台,这个函数会被宏替换为1
,就是说必然成功。
1 #if defined(__WIN32__) || defined(_WIN32) 2 #ifndef IMN_PIM 3 #define WS_VERSION_CHOICE1 0x202/*MAKEWORD(2,2)*/ 4 #define WS_VERSION_CHOICE2 0x101/*MAKEWORD(1,1)*/ 5 int initializeWinsockIfNecessary(void) { 6 /* We need to call an initialization routine before 7 * we can do anything with winsock. (How fucking lame!): 8 我们需要调用初始化例程 9 之后我们可以用Winsock做任何事。(怎么他妈的没用的!): 10 */ 11 static int _haveInitializedWinsock = 0; 12 WSADATA wsadata; 13 14 if (!_haveInitializedWinsock) { 15 if ((WSAStartup(WS_VERSION_CHOICE1, &wsadata) != 0) 16 && ((WSAStartup(WS_VERSION_CHOICE2, &wsadata)) != 0)) { 17 return 0; /* error in initialization */ 18 } 19 if ((wsadata.wVersion != WS_VERSION_CHOICE1) 20 && (wsadata.wVersion != WS_VERSION_CHOICE2)) { 21 WSACleanup(); 22 return 0; /* desired Winsock version was not available */ 23 } 24 _haveInitializedWinsock = 1; 25 } 26 27 return 1; 28 } 29 #else 30 int initializeWinsockIfNecessary(void) { return 1; } 31 #endif 32 #else 33 #define initializeWinsockIfNecessary() 1 34 #endif
分类:
C/C++
, live555源码阅读
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理