风吹过


以前,晚餐后在学校田径场的大榕树下,散散步吹吹风,累了就去图书馆看看书,感觉真好。


35 网络相关函数(三)——live555源码阅读(四)网络

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

 

yle=“color: #008000;“>/ 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