用socket可以实现像QQ那样发送即时消息的功能。客户端和服务端需要建立长连接,在长连接的情况下,发送消息。客户端可以发送心跳包来检测长连接。...
分类:
移动开发 时间:
2015-04-07 13:56:52
阅读次数:
189
一、概述前一篇博客(MQTT协议实现Eclipse Paho学习总结一) 写了一些MQTT协议相关的一些概述和其实现Eclipse Paho的报文类别,同时对心跳包进行了分析。这篇文章,在不涉及MQTT逻辑实现的基础之上分析一下Eclipse Paho中Socket通信的实现,这里我们主要阐述其采用...
分类:
系统相关 时间:
2015-04-01 16:59:46
阅读次数:
470
语言聊天中的压缩利器Speex最近项目组在着手开发一个IM项目,即时聊天App.所以在工程师们正在搭建后台服务器的时候,我必须解决一些前端和后端交互数据的一些事宜,例如协议,心跳包等。关于语音聊天的难点在于语音的压缩加密。
参考了以下文章之后,决定是用Speex这个开源利器来压缩语音吧。
http://code.csdn.net/news/313194Google了以下Speex,很多demo信...
分类:
编程语言 时间:
2015-04-01 13:24:14
阅读次数:
345
TCP keep-alive的三个参数用man命令,可以查看linux的tcp的参数:man 7 tcp其中keep-alive相关的参数有三个: tcp_keepalive_intvl (integer; default: 75; since Linux 2.4)
The number of seconds between TCP keep-alive pr...
分类:
其他好文 时间:
2015-03-16 19:19:08
阅读次数:
144
解决问题: 1. Socket 的异常断开 2. 部署在IIS程序池上的程序回收导致 端口占用,对象资源却已经释放的BUG SocketHelper 类 inOptionValues .net框架中用于检测连接的客户端 检测时间(默认2小时) 或者自己写个心跳包(客户端和服务端用规定...
分类:
Web程序 时间:
2015-03-16 14:14:39
阅读次数:
199
心跳包的发送,通常有两种技术方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一个低级别的线程,在该线程中不断检测客户端的回应, 如果在一定时间内没有收到客户端的回应,即认为客户端已...
分类:
其他好文 时间:
2015-03-12 11:01:32
阅读次数:
152
采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃、当机、网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回。很多时候,这不是我们需要的。我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误...
分类:
其他好文 时间:
2015-01-27 18:05:14
阅读次数:
178
TCP连接探测中的Keepalive和心跳包tcp keepalive 心跳 保活Linuxtcp心跳keepalive保活1. TCP保活的必要性 1) 很多防火墙等对于空闲socket自动关闭 2) 对于非正常断开, 服务器并不能检测到. 为了回收资源, 必须提供一种检测机制.2. 导致...
分类:
其他好文 时间:
2015-01-26 14:53:27
阅读次数:
205
TCP异常断开是指在突然断电,直接拔网线等等情况下,如果通信双方没有进行数据发送通信等处理的时候,无法获知连接已经断开的情况. 在通常的情况下,为了使得socket通信不受操作系统的限制,需要自己在应用层实现心跳包机制,来检查异常断开的情况,一般的方式就是服务器在一段时间没有收到客户端数据包时,定时...
分类:
其他好文 时间:
2015-01-24 10:11:48
阅读次数:
225
TCP连接简介
当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,
当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,
连接的建立是需要三次握手的,而释放则需要4次握手,
所以说每个连接的建立都是需要资源消耗和时间消耗的
经典的三次握手示意图:
经典的四次握手关闭图:
一、长连接与...
分类:
其他好文 时间:
2015-01-19 14:31:05
阅读次数:
187