免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1377 | 回复: 0

[开发环境] libtcp.so [复制链接]

论坛徽章:
0
发表于 2015-08-26 15:09 |显示全部楼层
libtcp.so
1.1 TCP重组模块核心数据结构说明
struct t_tuple4
{
  u_short source;    //源端口,网络序
  u_short dest;      //目的端口,网络序
  u_int saddr;       //源ip,网络序
  u_int daddr;       //目的ip,网络序
}; // 四元组
typedef struct t_tcp_param
{
   unsigned char   *data;        //指向ip头开始处的指针
   int             skblen;       //从ip头开始至报文结束的长度
   struct timeval  packet_time;  //传入的时间
   void (*tcp_func)();           //处理中调用的回调函数, 原型为
                                 // void tcp_callback(void *tcp_connection, void *pData);
   void (*reforward_func)();     //重传函数,原型为
                                 // void resend_callback(void *tcp_connection, void *pData);
   unsigned int id;              //作为hash值计算和hash比较的一项
   void *pUserData;              //回调函数中的pData;
}T_TCP_PARAM; // tcp 重组参数

1.2 TCP重组模块核心函数说明

/*====================================================
函数名: wl_process_tcp
功能:   处理数据包时的调用函数
入参:   tcp_param: 传入参数
出参:
返回值:  
======================================================*/
void wl_process_tcp(T_TCP_PARAM tcp_param);

/*====================================================
函数名: wl_tcp_init
功能:   在主线程中调用的tcp重组模块初始化函数
入参:   size:hash表中桶的总数目, 根据需要进行数目设置
               hash表中节点的最大数目是3 * size/4
出参:
返回值:  
======================================================*/
int wl_tcp_init(int size);
/*====================================================
函数名: wl_tcp_state
功能:   当回调函数tcp_func调用时, 判断tcp的状态
入参:   *a_tcp :tcp 流
出参:*state: 值为WL_JUST_EST,WL_DATA,WL_CLOSE,WL_RESET,WL_TIMED_OUT,WL_EXITING
返回值:  
======================================================*/
int wl_tcp_state(void *a_tcp, int *state);
/*====================================================
函数名: wl_get_tuple4
功能:   获取四元组
入参:   *a_tcp :tcp 流
出参: *pTupe4:四元组, *pSide:为WL_CLIENT 或WL_SERVER
               获取的四元组为第一个syn报文的四元组, 如需获取
               当前报文的四元组, 需根据*pSide的值进行判断。
               WL_CLIENT和WL_SERVER都表示数据接收方。
               四元组中的数据都为网络字节序。
返回值:  
======================================================*/
int wl_get_tuple4(void *a_tcp, struct t_tuple4 *pTupe4, int *pSide);
/*====================================================
函数名: wl_discard
功能:  收到数据时, 不立刻读取, 需要由tcp重组缓存
             时调用
入参:   a_tcp: tcp重组流指针
              num:读取的数据字节数, 示例:如果缓存中可读的
              有序数据字节数为1440, 即a_tcp->read 等于1440,参数
              num为0 表示全部缓存, 参数num设置为300, 表示已
              读取前300字节, 则缓存中还会保存后1140字节
出参:
返回值:  
======================================================*/
void wl_discard(void * a_tcp, int num);
/*====================================================
函数名: wl_get_stat_info
功能:   获取重传包个数和重传的字节数
入参:   *a_tcp :TCP流
               side: tcp流的一端, 取值为WL_CLIENT或WL_SERVER
出参:   *reForwardNum :重传包个数
              *reForwardByte:重传的字节数
返回值:  
======================================================*/
int wl_get_stat_info(void  *a_tcp,  int side, int* reForwardNum, int* reForwardByte);
/*====================================================
函数名: wl_set_stat_info
功能:  设置重传包个数和重传的字节数
入参:   *a_tcp :TCP流
               side: tcp流的一端, 取值为WL_CLIENT或WL_SERVER
               reSendByte:  重传字节数
               reSendNum:  重传报文数
出参:   
返回值:  R_OK   R_ERROR
======================================================*/
int wl_set_stat_info(void  *a_tcp, int side, int reSendByte, int resendNum);
/*====================================================
函数名: wl_receive_data
功能:  返回收到数据的信息
入参:   a_tcp: tcp流指针
出参:   *pside: 取值为WL_CLIENT , WL_SERVER, 分别 表示客户端收到
               数据和服务端收到数据
               **pdata:指向数据的开始处
               *data_len :数据的总长度
               *new_data_len: 新到数据的长度
返回值:  R_OK  R_ERROR
======================================================*/
int  wl_receive_data(void *a_tcp, int *pside,  unsigned char **pdata, int *data_len, int *new_data_len);

/*====================================================
函数名: wl_get_data
功能:  获取指定端的数据
入参:   a_tcp: tcp流指针
出参:   side: 取值为WL_CLIENT , WL_SERVER
               **pdata:指向数据的开始处
               *data_len :数据的总长度
返回值:  R_OK  R_ERROR
======================================================*/
int wl_get_data(void *a_tcp, int side, unsigned char **pdata, int *data_len);

/*====================================================
函数名: wl_get_pkt_time
功能:  获取重传报文的时间
入参:   *a_tcp :TCP流
出参:   *packt_time:报文的时间
返回值:  R_OK   R_ERROR
======================================================*/
int wl_get_pkt_time(void *a_tcp, struct timeval *packet_time);
/*====================================================
函数名: wl_get_resend_pkt_seq_len
功能:  获取报文的seq 和重传长度
入参:   *a_tcp :TCP流
出参:   *pSeq:序列号
              *pLen:重传字节数
返回值:  R_OK   R_ERROR
======================================================*/
int wl_get_resend_pkt_seq_len(void *a_tcp, unsigned int *pSeq, int *pLen);
/*====================================================
函数名: wl_get_resend_pkt_side
功能: 获取重传的数据包的方向
入参:   *a_tcp :TCP流
出参:   *pSide:方向 WL_CLIENT 或WL_SERVER
返回值:  R_OK   R_ERROR
======================================================*/
int wl_get_resend_pkt_side(void *a_tcp, int *pSide);
/*====================================================
函数名: wl_get_pkt_head_seq
功能: 获取缓存区头部对应的seq
入参:   *a_tcp :TCP流
出参:   *pSeq:seq值
返回值:  R_OK   R_ERROR
======================================================*/
int wl_get_pkt_head_seq(void *a_tcp, unsigned int *pSeq);


libtcp.so.rar (19.23 KB, 下载次数: 6)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP