基本的模式:
建立一个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号
阅读(1185) | 评论(0) | 转发(0) |