基本实现原理: 1)粘包和拆包采用帧头里面加长度信息来做; 2)超时机制:采用一个单独的线程来判断,每次收到数据就更新接收时间。在单独的线程里面判断如果当前时间减去上次接收的时间超过20秒则认为超时,关闭该连接; 3)用到了epoll_event结构体中的 epoll_data.ptr 指针:把客户端的信息保存在 epoll_data.ptr 指针当中,当出现epoll事件的时候从该指针提取客户端信息,然后进行操作。 完整的c代码,可以直接使用gcc编译,编译方法:gcc CreatCRC.c main.c -lpthread 配套有一个C#客户端(vs2008工程,全部源代码),可以向服务器发送数据和接收服务器返回的数据。
2022-09-06 10:26:05 31KB epoll 粘包拆包 接收超时
1