Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41241
  • 博文数量: 27
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 145
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-19 12:09
文章分类
文章存档

2012年(27)

我的朋友

分类:

2012-10-31 11:02:40

sock.csockGen.csocket层)

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_WRITABLESOCKET_READABLE0,用于和事件钩子函数搭配

说明:

-----------------------------------------------------------------------------------------------------------------

 

int socketWaitForEvent(socket_t *sp, int handlerMask, int *errCode)

功能:linuxvxworks没有调用该函数

说明:

-----------------------------------------------------------------------------------------------------------------

 

int socketReady(int sid)

功能:判断这个socket是否有事件需要处理

说明:

-----------------------------------------------------------------------------------------------------------------

 

int socketSelect(int sid, int timeout)

功能:判断是否有需要处理的事件,首先根据socketList[]中的socket_t的掩码添加到监控项中,可读、可写,还是异常,并且设置等待时间,然后设置每个socket_tcurrentEvents,留待函数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中的字节数

说明:

-----------------------------------------------------------------------------------------------------------------

阅读(515) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~