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 = ;
}

只要env.groupsockPriv->socketTable==NULL成立,就释放env.groupsockPriv指向对象。

// 若groupsockPriv对象的socketTable==NULL
// 析构的时候为env.groupsockPriv释放对象
NoReuse::~NoReuse() {
groupsockPriv(fEnv)->reuseFlag = ;
reclaimGroupsockPriv(fEnv);
}

6)initializeWinsockIfNecessary 根据需要初始化winSock

这个函数只用于windows系列操作系统。
windows网络编程是一件麻烦事,其必须要先进行一系列初始化的操作。
如果不是windows平台,这个函数会被宏替换为1,就是说必然成功。

 #if defined(__WIN32__) || defined(_WIN32)
#ifndef IMN_PIM
#define WS_VERSION_CHOICE1 0x202/*MAKEWORD(2,2)*/
#define WS_VERSION_CHOICE2 0x101/*MAKEWORD(1,1)*/
int initializeWinsockIfNecessary(void) {
/* We need to call an initialization routine before
* we can do anything with winsock. (How fucking lame!):
我们需要调用初始化例程
之后我们可以用Winsock做任何事。(怎么他妈的没用的!):
*/
static int _haveInitializedWinsock = ;
WSADATA wsadata; if (!_haveInitializedWinsock) {
if ((WSAStartup(WS_VERSION_CHOICE1, &wsadata) != )
&& ((WSAStartup(WS_VERSION_CHOICE2, &wsadata)) != )) {
return ; /* error in initialization */
}
if ((wsadata.wVersion != WS_VERSION_CHOICE1)
&& (wsadata.wVersion != WS_VERSION_CHOICE2)) {
WSACleanup();
return ; /* desired Winsock version was not available */
}
_haveInitializedWinsock = ;
} return ;
}
#else
int initializeWinsockIfNecessary(void) { return ; }
#endif
#else
#define initializeWinsockIfNecessary() 1
#endif

35 网络相关函数(三)——live555源码阅读(四)网络的更多相关文章

  1. 40 网络相关函数(八)——live555源码阅读(四)网络

    40 网络相关函数(八)——live555源码阅读(四)网络 40 网络相关函数(八)——live555源码阅读(四)网络 简介 15)writeSocket向套接口写数据 TTL的概念 函数send ...

  2. 39 网络相关函数(七)——live555源码阅读(四)网络

    39 网络相关函数(七)——live555源码阅读(四)网络 39 网络相关函数(七)——live555源码阅读(四)网络 简介 14)readSocket从套接口读取数据 recv/recvfrom ...

  3. 38 网络相关函数(六)——live555源码阅读(四)网络

    38 网络相关函数(六)——live555源码阅读(四)网络 38 网络相关函数(六)——live555源码阅读(四)网络 简介 12)makeSocketNonBlocking和makeSocket ...

  4. 37 网络相关函数(五)——live555源码阅读(四)网络

    37 网络相关函数(五)——live555源码阅读(四)网络 37 网络相关函数(五)——live555源码阅读(四)网络 简介 10)MAKE_SOCKADDR_IN构建sockaddr_in结构体 ...

  5. 34 网络相关函数(二)——live555源码阅读(四)网络

    34 网络相关函数(二)——live555源码阅读(四)网络 34 网络相关函数(二)——live555源码阅读(四)网络 2)socketErr 套接口错误 3)groupsockPriv函数 4) ...

  6. 33 网络相关函数(一)——live555源码阅读(四)网络

    33 网络相关函数(一)——live555源码阅读(四)网络 33 网络相关函数(一)——live555源码阅读(四)网络 简介 1)IsMulticastAddress多播(组播)地址判断函数 多播 ...

  7. 36 网络相关函数(四)——live555源码阅读(四)网络

    36 网络相关函数(四)——live555源码阅读(四)网络 36 网络相关函数(四)——live555源码阅读(四)网络 简介 7)createSocket创建socket方法 8)closeSoc ...

  8. 32 GroupSock(AddressPortLookupTable)——live555源码阅读(四)网络

    32 GroupSock(AddressPortLookupTable)——live555源码阅读(四)网络 32 GroupSock(AddressPortLookupTable)——live555 ...

  9. 28 GroupSock(NetAddress)——live555源码阅读(四)网络

    28 GroupSock(NetAddress)——live555源码阅读(四)网络 28 GroupSock(NetAddress)——live555源码阅读(四)网络 简介 1) NetAddre ...

随机推荐

  1. 20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容 1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成 ...

  2. 数据库备份与恢复(Mysql)

    Mysql备份种类可以分为两种:完全备份和增量备份 完全备份:对某一个时间点上的所有数据或应用进行的一个完全复制. 增量备份:指在一次全备份上或上一次增量备份后,以后每次的备份只需备份与前次相比增加或 ...

  3. JS数组类型检测

    在强类型语言,数组类型检测是非常容易的事情(typeof就可以解决),而在弱语言JS数据类型就很容易混淆了. JS中常见的数据类型有:number.string.boolean.undefined.f ...

  4. 微信下输入法在IOS和安卓下的诡异

    1.验证window.innerHeight 系统版本 iOS9.1.1 安卓4.4.4 没有输入法的情况下 504 567 有输入法的情况下 208 273 看来两者的window.innerHei ...

  5. FreeImage使用

    http://blog.csdn.net/byxdaz/article/details/6056509 http://blog.chinaunix.net/uid-20660110-id-65639. ...

  6. Autofac IContainer 测试

    using Autofac; using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  7. 微信小程序 教程及示例

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有,转载请联系作者获得授权.微信小程序正式公测, ...

  8. verilog阻塞与非阻塞的初步理解(一)

    通过两个模块来区别两者.测试平台:Modelsim altera 6.5b 阻塞模块: module blocking(clk,a,b,c); :] a; input clk; :] b,c; :] ...

  9. NSURLSession & NSCache

    用于替代 NSURLConnection 支持后台运行的网络任务 暂停.停止.重启网络任务,不再需要 NSOperation 封装 请求可以使用同样的配置容器 不同的 session 可以使用不同的私 ...

  10. JavaScript基础整理(2)

    接下来的重点是函数.我们知道函数是特殊的对象. 函数作用域和声明提前.JavaScript中没有块级作用域,只有函数作用域:变量在声明它们的函数体以及这个函数体嵌套的任意 函数体内都要定义. func ...