Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1368723
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: 网络与安全

2011-03-03 12:14:18

基本的模式:
   建立一个UDP数据发送线程,thread_func的模式是
void * thread_func(void* arg){
   while(udp_exec)
   {
        sem_wait(...)
        搜索待发送的数据包
        pthread_mutex_lock(...);
        做发送的工作
        ............
        pthread_mutex_unlock(...);
 
 
    }
}
其他辅助配置:
   (1)预先给出UDP数据发送缓存,可采用数组的方式来做
   (2)提供其他模块与它的通信接口,如:数据填充接口,数据删除接口
    达到的效果是其他线程只需将数据填充进来,不用管发送的问题
具体数据结构的支持:
   (1)数据包的定义
        typedef struct app_pack{
          int          ap_type;//区分应用
          int          ap_valid;
          int          ap_cur_retry;
          int          ap_max_retry;
          int          ap_socket;
          char         ap_peer[...];
          unsigned char ap_buf[MAX_BYTES];
          int          ap_length;
          ......
        }App_pack_t;
   (2)发送次数通过ap_retry控制,缓存的释放通过ap_valid控制
 
    另外提供数据接收线程:
    验证数据对方已收到,将ap_valid标志修改即可,但是这个重传的次数(ap_max_retry)也是要有一定的限制的
    这个数据的验证的方式也可以复杂化,可以引入TCP的syn号
   
 
      
 
阅读(1153) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~