1. 核心部分,即底层网络封装部分,有5个文件
代码为C语言
socket_poll.h //封装了关于多路复用的系统调用,即(以epoll为例)
static bool sp_invalid(poll_fd fd);
static poll_fd sp_create();
static void sp_release(poll_fd fd);
static int sp_add(poll_fd fd, int sock, void *ud);
static void sp_del(poll_fd fd, int sock);
static void sp_write(poll_fd, int sock, void *ud, bool enable);
static int sp_wait(poll_fd, struct event *e, int max);
static void sp_nonblocking(int sock);
socket_epoll.h//linux平台的实现 利用epoll
socket_kqueue.h//bsd平台实现 利用kqueue
socket_server.h//
socket_server.c//
利用了两个重要的结构:
一个是struct socket,对fd以及fd相关的属性进行了封装。
一个是struct socket_server,包装了管道的读写端,以及发生的事件表,socket池等。
其中所有函数如下:
socket_server_create//创建了一个socket_server指针赋值并返回
socket_server_release
socket_server_poll//处理管道上来的指令 和 epoll_wait事件socket_server_exit
socket_server_close
socket_server_start
socket_server_send
socket_server_listen
socket_server_connect
socket_server_bind
socket_server_block_connect