Python程序设计课件第12章网络编程和多线程编程.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python程序设计课件第12章网络编程和多线程编程.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 程序设计 课件 12 网络 编程 多线程
- 资源描述:
-
1、 网络编程基础网络编程基础 TCP编程编程 多线程编程多线程编程第12章 网络和多任务编程参考书目Python 程序设计目录 网络编程基础网络编程基础 TCP编程编程 多线程编程多线程编程这里说明图片内容 网络编程基础网络编程基础 TCP编程编程 多线程编程多线程编程目录这里说明图片内容 网络编程基础1 IP 地址IP 地址就是标识网络中设备的一个地址,类比家庭地址。IP 地址分为两类:IPv4 和 IPv6。目前使用的IP地址 由点分十进制组成(比如:192.168.247.1)IPv4 未来使用的IP地址 由冒号十六进制组成fe80:c0be:39:4cb4:3d21%30)IPv6网络编
2、程基础1 IP 地址IP 地址的作用是标识网络中唯一的一台设备的,也就是说通过IP地址能够找到网络中某台设备。查看 IP 地址方式:使用 ifconfig 命令Linux 和 mac OS 使用 ipconfig 命令Windows检查网络是否正常使用,通常是在命令提示符中下使用ping 命令。比如:ping 61.135.169.121或者ping 。文件相关的基本概念2端口与端口号 传输数据的通道,好比教室的门 作用就是给运行的应用程序提供传输数据的通道。端口 对端口进行了编号,好比现实生活中的门牌号 作用是用来区分和管理不同端口的,通过端口号能找到唯一个的一个端口。端口号端口和端口号的关
3、系:端口号可以标识唯一的一个端口。文件相关的基本概念2端口与端口号 指众所周知的端口号,范围从0到1023 一般固定分配给一些服务,比如21端口分配给FTP(文件传输协议)服务知名端口号 一般程序员开发应用程序使用端口号称为动态端口号,范围是从1024到65535。如果程序没有设置端口号,操作系统会在范围内随机生成。当运行的程序退出时,所占用的这个端口号就会被释放。动态端口号端口号的分类:文件相关的基本概念3 TCP数据不能随便发送,在发送之前还需要选择一个对应的传输协议,保证程序之间按照指定的传输规则进行数据的通信,即TCP。TCP 的英文全拼(Transmission Control Pr
4、otocol)简称传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议。比如:文件下载,浏览器上网。TCP通信步骤:1)创建连接2)传输数据3)关闭连接TCP 的特点:1)面向连接2)可靠传输文件相关的基本概念4 Socket(套接字)socket(简称 套接字)是进程之间通信一个工具,好比现实生活中的插座socket 的作用是负责进程之间的网络数据传输,好比数据的搬运工。socket socket 使用场景:只要跟网络相关的应用程序或者软件都使用到使用场景:只要跟网络相关的应用程序或者软件都使用到了了socketsocket。比如即时聊天工具:。比如即时聊天工具:QQQQ、微
5、信和浏览器。、微信和浏览器。文件相关的基本概念4 Socket(套接字)send和recv分别是指利用Socket在客户端与服务器端的数据发送和接收,send和recv的底层工作原理:1.TCP socket的发送和接收缓冲区2.send原理剖析 应用程序把发送的数据先写入到发送缓冲区应用程序把发送的数据先写入到发送缓冲区(内存中的一片空间内存中的一片空间),再由操作系统控制网卡把发送缓冲区的数据发送给服务端网卡再由操作系统控制网卡把发送缓冲区的数据发送给服务端网卡3.recv原理剖析 调用操作系统接口,由操作系统通过网卡接收数据,把接收的数据调用操作系统接口,由操作系统通过网卡接收数据,把接
6、收的数据写入到接收缓冲区写入到接收缓冲区(内存中的一片空间),应用程序再从接收缓存内存中的一片空间),应用程序再从接收缓存区获取客户端发送的数据。区获取客户端发送的数据。网络编程基础网络编程基础 TCP编程编程 多线程编程多线程编程目录这里说明图片内容 TCP编程Socket分为客户端和服务器。客户端Socket用于建立与服务端Socket的连接,服务端Socket用于等待客户端Socket的连接。因此,在使用客户端Socket之前,必须建立服务端Socket。在Python语言中创建Socket服务端程序,需要使用Socket模块中的socket类。TCP编程TCP网络应用程序的注意以下2点
7、:1)进行通信的时候必须要先建立连接。TCPTCP客户端程序一般不需要绑定端口号,因为客户端是主动发起建立连接的。客户端程序一般不需要绑定端口号,因为客户端是主动发起建立连接的。TCP TCP 服务端程序必须绑定端口号,否则客户端找不到这个服务端程序必须绑定端口号,否则客户端找不到这个 TCP TCP 服务端程序。服务端程序。listenlisten后的套接字是被动套接字,只负责接收新的客户端的连接请求,不能后的套接字是被动套接字,只负责接收新的客户端的连接请求,不能收发消息。收发消息。2)连接成功后,TCP 服务器端程序会产生一个新的套接字,收发客户端消息使用该套接字。关闭关闭 accept
8、 accept 返回的套接字意味着和这个客户端已经通信完毕。返回的套接字意味着和这个客户端已经通信完毕。关闭关闭 listen listen 后的套接字意味着服务端的套接字关闭了,会导致新的客户端后的套接字意味着服务端的套接字关闭了,会导致新的客户端不能连接服务端,但是之前已经接成功的客户端还能正常通信。不能连接服务端,但是之前已经接成功的客户端还能正常通信。TCP编程1 TCP通信流程TCP编程2 创建TCP客户端程序主动发起建立连接请求的是客户端程序。编写TCP客户端程序:首先要导入socket模块:import socket其次是创建客户端 socket 对象:socket.socket
9、(AddressFamily,Type)AddressFamily 表示IP地址类型,分为IPv4和IPv6 Type 表示传输协议类型TCP编程2 创建TCP客户端程序客户端创建方法:1.connect(host,port)表示和服务端套接字建立连接 host是服务器ip地址 port是应用程序的端口号2.send(data)表示发送数据,data是二进制数据3.recv(buffersize)表示接收数据,buffersize是每次接收数据的长度TCP编程2 创建TCP客户端程序本例实现了一个客户端Socket应用,该应用发送字符串,然后服务端返回数据,最后将这些数据输出到网络调试的终端上
10、。import socketif _name_=_main_:#创建tcp客户端套接字#1.AF_INET:表示ipv4#2.SOCK_STREAM:tcp传输协议 tcp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#和服务端应用程序建立连接 tcp_client_socket.connect(192.168.131.62,8080)#代码执行到此,说明连接建立成功#准备发送的数据 send_data=服务端,我是爱你的,请接受我吧!.encode(gbk)TCP编程2 创建TCP客户端程序本例实现了一个客户端S
11、ocket应用,该应用发送字符串,然后服务端返回数据,最后将这些数据输出到网络调试的终端上。#发送数据 tcp_client_socket.send(send_data)#接收数据,这次接收的数据最大字节数是1024 recv_data=tcp_client_socket.recv(1024)#返回的直接是服务端程序发送的二进制数据 print(recv_data)#对数据进行解码 recv_content=recv_data.decode(gbk)print(接收服务端的数据为:,recv_content)#关闭套接字 tcp_client_socket.close()运行结果:bxb0 x
12、aexc4xe3xd4xdaxbfxdaxa3xacxd7xecxc4xd1xbfxaaxa3xa1接收服务端的数据为:爱你在口,嘴难开!TCP编程3 创建TCP服务器端程序等待接受连接请求的是服务端程序。编写TCP服务端程序:首先要导入socket模块:import socket其次是创建服务端 socket 对象:socket.socket(AddressFamily,Type)AddressFamily 表示IP地址类型,分为IPv4和IPv6 Type 表示传输协议类型TCP编程3 创建TCP服务器端程序服务端创建过程:1.bind(host,port)表示绑定端口号,host 是 i
13、p 地址,port 是端口号,ip 地址一般不指定,表示本机的任何一个ip地址都可以。2.listen(backlog)表示设置监听,backlog参数表示最大等待建立连接的个数。3.accept()表示等待接受客户端的连接请求4.send(data)表示发送数据,data 是二进制数据5.recv(buffersize)表示接收数据,buffersize 是每次接收数据的长度TCP编程3 创建TCP服务器端程序创建TCP服务端套接字,设置端口号为8989,设置监听,准备接受客户端发来的数据,并显示客户端的IP和端口号,演示TCP 服务端程序。import socketif _name_=_m
14、ain_:#创建TCP服务器端套接字 tcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#设置端口号复用,让程序退出端口号立即释放 tcp_server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)#给程序绑定端口号 tcp_server_socket.bind(,8989)#设置监听#128:最大等待建立连接的个数,提示:目前是单任务的服务端,同一时刻只能服务于一个客户端,后续使用多任务能够让服务端同时服务于多个客户端,#不需要让客户
15、端等待建立连接 tcp_server_socket.listen(128)TCP编程3 创建TCP服务器端程序创建TCP服务端套接字,设置端口号为8989,设置监听,准备接受客户端发来的数据,并显示客户端的IP和端口号,演示TCP 服务端程序。#等待客户端建立连接的请求,只有客户端和服务端建立连接成功代码才会解阻塞,代码才能继续往下执行#1.专门和客户端通信的套接字:service_client_socket#2.客户端的ip地址和端口号:ip_port service_client_socket,ip_port=tcp_server_socket.accept()#代码执行到此说明连接建立成
16、功 print(客户端的ip地址和端口号:,ip_port)#接收客户端发送的数据,这次接收数据的最大字节数是1024 recv_data=service_client_socket.recv(1024)#获取数据的长度 recv_data_length=len(recv_data)print(接收数据的长度为:,recv_data_length)#对二进制数据进行解码 recv_content=recv_data.decode(gbk)print(接收客户端的数据为:,recv_content)TCP编程3 创建TCP服务器端程序创建TCP服务端套接字,设置端口号为8989,设置监听,准备接
17、受客户端发来的数据,并显示客户端的IP和端口号,演示TCP 服务端程序。#准备发送的数据 send_data=ok,问题正在处理中.encode(gbk)#发送数据给客户端 service_client_socket.send(send_data)#关闭服务与客户端的套接字,终止和客户端通信的服务 service_client_socket.close()#关闭服务端的套接字,终止和客户端提供建立连接请求的服务 tcp_server_socket.close()运行结果:客户端的ip地址和端口号:(192.168.1.102,53524)接收数据的长度为:18接收客户端的数据为:爱你在口,口难
18、开!网络编程基础网络编程基础 TCP编程编程 多线程编程多线程编程目录这里说明图片内容 多线程编程多任务是指在同一时间内执行多个任务,例如:现在电脑安装的操作系统都是多任务操作系统,可以同时运行着多个软件。有2种执行方式:在一段时间内交替去执行任务。例如:对于单核CPU处理多任务,操作系统轮流让各个软件交替执行,假如:软件1执行0.01秒,切换到软件2,软件2执行并发 对于多核CPU处理多任务,操作系统会给CPU的每个内核安排一个执行的软件,多个内核分别运行不同的程序。并行在Python程序中,想要实现多任务可以使用进程来完成,进程是实现多任务的一种方式。多线程编程1 进程与多进程的使用1.什
展开阅读全文