码迷,mamicode.com
首页 > 编程语言 > 详细

python基础整理笔记(九)

时间:2016-07-10 12:38:34      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

一. socket过程中注意的点

1. 黏包问题

所谓的黏包就是指,在TCP传输中,因为发送出来的信息,在接受者都是从系统的缓冲区里拿到的,如果多条消息积压在一起没有被读取,则后面读取时可能无法分辨消息之间的分隔,造成读取的时候把前后多条消息的内容连起来读出来,就造成了错误。比较靠谱的解决方式是:一端在发送完消息以后,需要接收一次消息,另一端在第一次接收完消息以后,发送一次消息,这样间隔处理;这样就会保证每次接收的消息都是完整到结束的,因为对方在每次发送完整消息以后,都会接收消息以停止发送。在接收长消息的时候,可以先发送长度,然后接收端根据长度迭代不断接收信息。

 

2. socketserver库

在写一个基础的socket的服务端时,我们需要做建立socket、绑定端口、开启监听、阻塞在等待连接(以获得连接的地址和socket),这样几个步骤。如下图所示:

技术分享

技术分享服务端流程示例代码

此外这样的过程是无法并发的,也就是说同一个server同时只能连接一个client并接受其请求,其他client都是被阻塞的(在listen范围内的是会等待,其他则无法连接),等到连接的client断开连接后,才能连接上。

但是我们可以使用socketserver!这个库的一些对象及其方法,封装了上面的一系列动作,我们只需要简单传入需要绑定的地址端口,并使用其方法启动server即可。而且socketserver可以通过io多路复用、多进程、多线程等方式支持服务多个客户端的连接,且并不需要我们自己实现或修改代码。

python基础整理笔记(九)

标签:

原文地址:http://www.cnblogs.com/nigel-woo/p/5657315.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!