今天太忙了。没时间整理很多:
二. 监听套接字初始化
开始之前,先介绍一下这个程序最主要的几个数据结构:
/* 套接字结构 */
typedef struct Sockets {
fd_set readfds, writefds, exceptfds; // 1. 要被检测的可读、可写、例外的套接字集合
int PmuSock; // 2. PMU规范套接字
......
struct Sockets_Comm *Comm; // 3. 为设置中每一个通讯通道建立网络接口
} Sockets;
1. 做过IO复用的都知道这个。
2. 用来监听(listen())主站链接的监听socket。
3. 是个结构体数组:数组长度等于通信通道数量。结构体定义如下:
/* COMM网络结构 */
typedef struct Sockets_Comm{
int Protocol; // 1. 该链接使用的规约类型
int MainSock; // 2. 主套接字(即上面提到的监听套接字accept到的链接套接字)
pthread_t MainThreadID; // 4. 主线程ID,该线程用于处理该链接通信。
pthread_cond_t MainCond;
pthread_mutex_t MainMutex;
............
}Sockets_Comm;
1. 规约类型:该链接使用哪种通信协议。
2. (如上注释)
3. (如上注释)
|