Python 从多人聊天室开始谈系列 - 说说TCP
接下来我们开始说说TCP的问题,众所周知的,三次握手和四次挥手是核心指导方向,但对我们而言,更重要的是,我们应该知道,TCP,或者说socket有些什么问题:
粘包和拆包问题。
这是比较主要的一个问题,当然,如果我们使用了WebSocket,那么基本不需要考虑这个问题。
主要是由于在TCP传输过程中不是一口气把所有信息都传输过去,而是分块传输的,所以会导致一系列问题,因此我们需要自己封装一下。
在这里有详细的代码:http://stackoverflow.com/questions/17667903/python-socket-receive-large-amount-of-data
我们稍作修改和封装之后即可使用。
之后我们还要做的是定义传输格式,这里我们简单的用json来传输,json需要json的拆装包函数:
json.loads()
json.dumps()
来实现json到Python字典类型的转换。
全部完成之后还有一个问题,我们这个模型,必须要保持长连接,但是在很长一段时间的没有消息过后,连接会被断开,我们需要重新建立连接,但是对于聊天室而言,我们还需要保证长时间连通,这样可以保证窥屏用户的需求。
于是我们进行心跳模拟,客户端一段时间发一个数据包给服务端,服务端一段时间应答即可。
当然,还是比较消耗资源的,如果可以的话,尽可能的还是不要用这么原始的方式。
植入部分
如果您觉得文章不错,可以通过赞助支持我。
如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。