打算做一个类似qq的消息弹出提醒,客户端安装软件后,服务端有消息就通知客户端,服务端打算用libevent来做。客户端与服务端通信用tcp还是udp为好?向这种单纯的消息通知大概怎么设计与实现?麻烦各位谈谈,给个参考链接也行。
linux编程 C++ libevent socket
好乱的提问。
通信推荐使用 UDP,如果你的能力够的话。因为国内网络比较差,而 TCP 对丢包什么的太敏感的,用户网络不稳定的话连接就会 stalled。UDP 自己做流控就可以做得更适合消息通知了。当然如果你的消息很短的话直接发一个带序列号和签名的 UDP 包过去就行,客户端收到了给个回应,服务器等一段时间还没收到回应就重发。
linux建议用epoll模型 这样就能避免c10k问题
建议用tcp模型先试试压力 写的时候注意点 抽取核心功能 到时候可以替换成udp再测试测试
建议搜索 ‘订阅/发布’ 模型 ‘消息队列’ 等架构信息 进行参考
之前做过一个类似的项目,使用的是tcp长连接,也是用基于libevent开发的: 1、高并发,lz可以搜索c10k问题 2、断开重连,特别2G网络下的网络不稳定问题,还是就是2G网络有一部分使用的是移动的代理上网的,具体记不住了,lz google吧
C socket 绑定 DNS端口错误
使用 socket 与 pop3 服务器通信, send() 不成功
求一个SOCKET客户端框架
C++用socket访问支持https协议网站的方法
socket编程中,server如何管理多个connection?
java 与 c++ 的socket通信过程中,如何将c++发送的结构体直接转成java bean类