!!!!!!!!!!!!
分类: LINUX
2011-06-09 20:36:49
socket_t有两个ring queue,分别是inBuf,outBuf,分别对应输入、输出,在从socket读取数据时,会将读取的数据存放在inBuf中,在向socket发送数据时,首先将数据存放在outBuf中,然后将outBuf中的数据发送给socke。
int socketWrite(int sid, char *buf, int bufsize)
功能:主要功能是向将要输出到socket的数据存放在outBuf的队列中,如果队列没有可以存放的空间,就向socket输出,即输出到浏览器端
说明:
-----------------------------------------------------------------------------------------------------------------
int socketWriteString(int sid, char_t *buf)
功能:输出一字符串到socket
说明:
-----------------------------------------------------------------------------------------------------------------
int socketRead(int sid, char *buf, int bufsize)
功能:从socket接收数据,这些数据首先存放在inBuf中,然后再将inBuf中数据拷贝到buf中
说明:
-----------------------------------------------------------------------------------------------------------------
int socketGets(int sid, char_t **buf)
功能:从socket获取一个字符串,如果遇到EOF或者读取的超过了2048,就会在lineBuf中添加换行符,从socket读取的字符存放在lineBuf中,然后将lineBuf中的数据拷贝到buf中
说明:
-----------------------------------------------------------------------------------------------------------------
int socketFlush(int sid)
功能:将outBuf中的数据输出到socket中
说明:
-----------------------------------------------------------------------------------------------------------------
int socketInputBuffered(int sid)
功能:获取inBuf中的字节数
说明:
-----------------------------------------------------------------------------------------------------------------
int socketEof(int sid)
功能:判断是否是eof
说明:
-----------------------------------------------------------------------------------------------------------------
int socketCanWrite(int sid)
功能:outBuf中还有多少空间可以使用,这样就可将输出到socket的数据输出到该outBuf,然后再将该outBuf中的数据输出到socket
说明:
-----------------------------------------------------------------------------------------------------------------
void socketSetBufferSize(int sid, int in, int line, int out)
功能:主要是设置inBuf,outBuf,lineBuf的大小
说明:
-----------------------------------------------------------------------------------------------------------------
void socketCreateHandler(int sid, int handlerMask, socketHandler_t handler, void* data)
功能:就是添加一个钩子函数,在该sid的处于handlerMask状态(可读、可写)时,对应的调用该钩子函数
说明:
-----------------------------------------------------------------------------------------------------------------
void socketDeleteHandler(int sid)
功能:删除钩子函数
说明:
-----------------------------------------------------------------------------------------------------------------
static int socketDoOutput(socket_t *sp, char *buf, int toWrite, int *errCode)
功能:向socket输出数据,输出广播或者udp或者tcp数据包
说明:
-----------------------------------------------------------------------------------------------------------------
static int tryAlternateSendTo(int sock, char *buf, int toWrite, int i,struct sockaddr *server)
功能:发送一个udp 数据包
说明:
-----------------------------------------------------------------------------------------------------------------
int socketAlloc(char *host, int port, socketAccept_t accept, int flags)
功能:分配一个socket_t结构
说明:
-----------------------------------------------------------------------------------------------------------------
void socketFree(int sid)
功能:释放一个socket_t结构,如果sock还有调用,则设置为非阻塞模式,然后shutdown(SHUT_WR), recv(), 最后close(),释放内存。这里什么原因,还需学习
说明:
-----------------------------------------------------------------------------------------------------------------
socket_t *socketPtr(int sid)
功能:有sid获得对应的socketList[sid]
说明:
-----------------------------------------------------------------------------------------------------------------
int socketGetError()
功能:获取errno
说明:
-----------------------------------------------------------------------------------------------------------------
int socketGetHandle(int sid)
功能:获取socket handle
说明:
-----------------------------------------------------------------------------------------------------------------
int socketGetBlock(int sid)
功能:获取是否是阻塞模式
说明:
-----------------------------------------------------------------------------------------------------------------
int socketGetMode(int sid)
功能:获取mode,没用到
说明:
-----------------------------------------------------------------------------------------------------------------
void socketSetMode(int sid, int mode)
功能:设置模式,没用到
说明:
-----------------------------------------------------------------------------------------------------------------
int socketGetPort(int sid)
功能:由sid获取对应的端口
说明:
-----------------------------------------------------------------------------------------------------------------
int socketOpen()
功能:打开socket module
说明:
-----------------------------------------------------------------------------------------------------------------
void socketClose()
功能:关闭socket module,关闭socketList[]中的所有连接的socket
说明:
-----------------------------------------------------------------------------------------------------------------
int socketOpenConnection(char *host, int port, socketAccept_t accept, int flags)
功能:打开web服务器的监听socket,设置为SOCKET_LISTENING,非阻塞模式
说明:
-----------------------------------------------------------------------------------------------------------------
static int tryAlternateConnect(int sock, struct sockaddr *sockaddr)
功能:尝试连接一个socket,服务器端没用
说明:
-----------------------------------------------------------------------------------------------------------------
void socketCloseConnection(int sid)
功能:关闭一个socket
说明:
-----------------------------------------------------------------------------------------------------------------
static void socketAccept(socket_t *sp)
功能:web服务器监听socket,等待接收访问,非阻塞方式
说明:
-----------------------------------------------------------------------------------------------------------------
int socketGetInput(int sid, char *buf, int toRead, int *errCode)
功能:从socket中读取数据
说明:
-----------------------------------------------------------------------------------------------------------------
void socketRegisterInterest(socket_t *sp, int handlerMask)
功能:设置handlerMask,可以是SOCKET_WRITABLE、SOCKET_READABLE或0,用于和事件钩子函数搭配
说明:
-----------------------------------------------------------------------------------------------------------------
int socketWaitForEvent(socket_t *sp, int handlerMask, int *errCode)
功能:linux、vxworks没有调用该函数
说明:
-----------------------------------------------------------------------------------------------------------------
int socketReady(int sid)
功能:判断这个socket是否有事件需要处理
说明:
-----------------------------------------------------------------------------------------------------------------
int socketSelect(int sid, int timeout)
功能:判断是否有需要处理的事件,首先根据socketList[]中的socket_t的掩码添加到监控项中,可读、可写,还是异常,并且设置等待时间,然后设置每个socket_t的currentEvents,留待函数socketDoEvent()处理
说明:
-----------------------------------------------------------------------------------------------------------------
void socketProcess(int sid)
功能:在socketList[]中查找有发生事件的socket,然后进行处理
说明:
-----------------------------------------------------------------------------------------------------------------
static int socketDoEvent(socket_t *sp)
功能:处理socket可读、可写,然后调用相应的钩子函数
说明:
-----------------------------------------------------------------------------------------------------------------
int socketSetBlock(int sid, int on)
功能:设置socket的阻塞模式
说明:
-----------------------------------------------------------------------------------------------------------------
int socketDontBlock()
功能:查看socket中是否有可读的数据
说明:
-----------------------------------------------------------------------------------------------------------------
int socketSockBuffered(int sock)
功能:获取inBuf中的字节数
说明:
-----------------------------------------------------------------------------------------------------------------