码迷,mamicode.com
首页 > 其他好文 > 详细

处理tcp里的粘包问题

时间:2017-11-07 01:29:59      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:UI   字节   div   access   组合   str   count   问题   nbu   

typedef struct _CONN_BUFFER
{
    uint8_t  buffer[CONN_BUFFER_LENGTH];
    uint32_t tail;
    uint64_t id;
    time_t access_time;
    uint32_t ip;
    int readerId;    
    uint8_t used;
}CONN_BUFFER;

CONN_BUFFER g_ConnBuffer[MAX_CONN_COUNT];

所有的socketfd都放入g_ConnBuffer中,其中used标志其可用状态,read此fd前要检查之。

tail指向数据尾部,当处理完一个数据包,将包的最后位置到tail的数据拷贝到前面;与下次收到的包组合。这样就处理了粘包问题;

 

CONN_BUFFER_LENGTH当前定义了1024字节,如果Client发送速率太快,导致buffer满,则会从epoll事件中移除,并关闭fd;

处理tcp里的粘包问题

标签:UI   字节   div   access   组合   str   count   问题   nbu   

原文地址:http://www.cnblogs.com/gm-201705/p/7795823.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!