一.网络信息传递:
网络分层:
二.网络通讯开发框架
1.web类(百度,博客园......)用浏览器打开
2.应用类(微信,QQ......)需要下载安装包才能打开
这两类对应的是不同的开发软件。
1.B/S(Brower/Server)服务器和浏览器的架构,该样式只需通过浏览器发http请求服务器,服务器返回响应,资源。
2.c/s (Clinet/Server)客户端和服务端的架构。从用户的层面进行的划分(电脑,手机),该模式有对用户环境的依赖。
三.Socket_tcp通信
socket套接字,用来实现网络编程进行数据传输的一种技术手段
socket已将tcp和ip协议封装起来,我们只需遵守socket的规定进行编写,就能实现网络通信。
tcp是可靠的,基于连接的通信协议。对网络质量要求高
udp是不可靠的,容易丢包(基于非连接)经常用于直播,视频通话,实时性比较高。
通信步骤
1. 建立连接
2. 传输数据
3. 关闭连接
服务器的创建过程
1. 创建服务器对象和Socket对象
2. 绑定自己的ip号和端口号
3. 设置监听模式,和最大连接数。
4.等待客户端连接
5.接收客户端数据
6.给客户端发送数据
7.关闭连接
socket--》》bind--》》listen--》》accept--》》reacve(收)send(发)--》》close
IO多路复用
IO多路复用是通过底层系统的机制,可以实现监视多个文件描述符,一旦描述符就绪状态(写/读),就会通知相应的程序进入相应的操作,用于提高效率。
黏包:数据粘合在一起
socket发送数据是建立在tcp/udp传输协议之上,传输层是以流的方式进行传输,没有明确开始和结尾的边界,并且由于发送的数据会根据接口的条件,进行切片处理,所以难以判断数据大小长度。会出现数据传输不完整和数据错乱。
subprocess
subprocess.Popen(cmd指令,shell权限,stdout=subprocess.PIPE返回正确指令,stderr=subprocess.PIPE返回错误指令)
window返回的数据一般会用gbk进行编码
sub.stdout.read().decode()读取正确信息,并解码。
sub.stderr.read().decode()读取错误信息,并解码。
缓冲区
缓存区又称为缓存,他是内存空间的一部分,也就是说,在内存空间中预留了一定的存储空间,利用存储空间来缓冲或输出数据,大大提高了电脑工作的效率。内存的写入数据远远大于磁盘的写入数据。