今日内容:
1、关于UDP传输的模拟实现
2、使用socketserver模块实现TCP传输的并发操作
3、进程理论的介绍
1、关于UDP传输的模拟实现
模拟UDP传输与之前的模拟TCP传输大致相同
不同之处是:
TCP:socket(AF_INET,SOCK_STREAM)
UDP:socket(AF_INET,SOCK_DGRAM)
然后就是
UDP:传输时用的时sendto方法,接受是用recvfrom方法
两者传输效果也有明显的不同,UDP相对于TCP是一种不可靠的传输,所以它传输时可以并发(实际上并不是真正的并发),同时其传输最大限制为512bytes,一旦超过就会有很大概率丢包
服务器: from _socket import * sever = socket(AF_INET,SOCK_DGRAM) sever.bind(('127.0.0.1',8081)) while True: data,client_address = sever.recvfrom(1024) print(data.decode('utf-8')) sever.sendto(data.upper(),client_address)
客户端: from _socket import * client = socket(AF_INET,SOCK_DGRAM) while True: client.sendto('hello'.encode('utf-8'),('127.0.0.1',8081)) data,sever_address=client.recvfrom(1024) print(data.decode('utf-8'))
2、使用socketserver模块实现TCP传输的并发操作
使用socketserver模块实现并发的代码内容是将传输代码放在一个类中,这个类中必须有一个handle方法,handle方法的内容就是传输的方法,在下面定义的是这个方法的对象每次有一个客户端接入,就会产生一个对象
客户端:
import socket PC= socket.socket(socket.AF_INET,socket.SOCK_STREAM) ip = '127.0.0.1' port = 8011 PC.connect((ip,port)) while True: m = input('请输入:').strip() PC.send(m.encode('utf-8')) data = PC.recv(1024) print(data.decode('utf-8'))
服务器: import socketserver class MyTCPhandle(socketserver.BaseRequestHandler): def handle(self): while True: try: data = self.request.recv(1024) if len(data) == 0:break print(data.decode('utf-8')) self.request.send(data.upper()) except ConnectionResetError: break self.request.close() if __name__ == '__main__': sever = socketserver.ThreadingTCPServer(('127.0.0.1',8081),MyTCPhandle) sever.serve_forever()
3、进程理论的介绍
什么是进程?
进程就是指程序在运行/执行的过程,进程是用来描述程序运行过程的虚拟概念
进程vs程序
程序:就是一堆代码
进程:就是程序执行的过程
进程就是指程序在运行/执行的过程,进程是用来描述程序运行过程的虚拟概念
进程vs程序
程序:就是一堆代码
进程:就是程序执行的过程
进程的概念起源于操作系统,进程是操作系统最核心的概念,操作系统其他的概念都是围绕进程来
什么是操作系统?
操作系统就是用来管理/协调/控制计算机硬件资源和应用软件资源的一段控制程序
有两大功能:
1、将复杂的硬件操作封装成简单的接口给应用程序或者用户去使用
2、将多个进程对硬件的竞争变得有序
操作系统发展史
并发:多个任务看起来是同时执行的
串行:一个任务完完整整的运行完毕,才能运行下一个任务
多道技术:(复用=》共享/共用)
1、空间上的复用:多个任务复用内存的空间
2、时间上的复用:多个任务复用cpu的时间
1、一个任务占用cpu的时间过长会被操作系统强行剥夺走cpu的执行权限,比起串行执行反而会降低效率
2、一个任务遇到io操作会被操作系统强行剥夺走cpu的执行权限,比起串行执行会提高效率
为何用进程?
实现并发
什么是操作系统?
操作系统就是用来管理/协调/控制计算机硬件资源和应用软件资源的一段控制程序
有两大功能:
1、将复杂的硬件操作封装成简单的接口给应用程序或者用户去使用
2、将多个进程对硬件的竞争变得有序
操作系统发展史
并发:多个任务看起来是同时执行的
串行:一个任务完完整整的运行完毕,才能运行下一个任务
多道技术:(复用=》共享/共用)
1、空间上的复用:多个任务复用内存的空间
2、时间上的复用:多个任务复用cpu的时间
1、一个任务占用cpu的时间过长会被操作系统强行剥夺走cpu的执行权限,比起串行执行反而会降低效率
2、一个任务遇到io操作会被操作系统强行剥夺走cpu的执行权限,比起串行执行会提高效率
为何用进程?
实现并发