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