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;
时间: 2024-11-07 03:01:49