socket编程

160 阅读2分钟

一.网络信息传递:

网络分层:

二.网络通讯开发框架

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()读取错误信息,并解码。

缓冲区

缓存区又称为缓存,他是内存空间的一部分,也就是说,在内存空间中预留了一定的存储空间,利用存储空间来缓冲或输出数据,大大提高了电脑工作的效率。内存的写入数据远远大于磁盘的写入数据。