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字典类型的转换。

全部完成之后还有一个问题,我们这个模型,必须要保持长连接,但是在很长一段时间的没有消息过后,连接会被断开,我们需要重新建立连接,但是对于聊天室而言,我们还需要保证长时间连通,这样可以保证窥屏用户的需求。

于是我们进行心跳模拟,客户端一段时间发一个数据包给服务端,服务端一段时间应答即可。

当然,还是比较消耗资源的,如果可以的话,尽可能的还是不要用这么原始的方式。

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 知识, 语法

添加新评论