Python入门学习
DAY33
今日内容:基于UDP通信的套接字 socketserver模块 进程基础
1. 基于UDP通信的套接字
服务器
import socket server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #创建一个基于udp的服务器的套接字 server.bind(('127.0.0.1',8080)) # 绑定服务器IP,PORT data,client_addr = server.recvfrom(1024) # 接收客户端传来的数据 server.sendto(data.upper(),client_addr) # 发送消息给客户端 server.close()
客户端
import socket client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) msg = input('>>>:').strip() client.sendto(msg.encode('utf-8'),('127.0.0.1',8080)) data,server_addr = client.recvfrom(1024) print(data) client.close()
2 .socketserver模块(使用该模块可以实现并发处理)
基于TCP通信
服务器
import socketserver class MyTCPhandler(socketserver.BaseRequestHandler): def handle(self): while True: try: data = self.request.recv(1024) self.request.send(data.upper()) except ConnectionResetError: break if __name__ == '__main__': server = socketserver.ThreadingTCPServer(('127.0.0.1',8080),MyTCPhandler) server.serve_forever() # 链接循环
客户端
from socket import * client = socket(AF_INET,SOCK_STREAM) client.connect(('127.0.0.1',8080)) while True: msg = input('>>>:').strip() if len(msg) == 0: continue client.send(msg.encode('utf-8')) data = client.recv(1024) print(data) client.close()
基于UPD通信
服务器
import socketserver class MyUDPhandler(socketserver.BaseRequestHandler): def handle(self): data,sock = self.request sock.sendto(data.upper(),self.client_address) if __name__ == '__main__': server = socketserver.ThreadingUDPServer(('127.0.0.1',8080),MyUDPhandler) server.serve_forever()
客户端
from socket import * client = socket(AF_INET,SOCK_DGRAM) while True: msg = input('>>>:').strip() client.sendto(msg.encode('utf-8'),('127.0.0.1',8080)) data,server_addr = client.recvfrom(1024) print(data)
3.进程基础
什么是进程
进程指的是一个正在进行/运行的程序,进程是用来描述程序执行过程的虚拟概念进程和程序
程序:一堆代码
进程:程序的执行的过程进程的概念起源于操作系统,进程是操作系统最核心的概念,操作系统其它所有的概念都是围绕进程来
操作系统理论:
操作系统是什么?
操作系统是一个协调\管理\控制计算机硬件资源与应用软件资源的一段控制程序
有两大功能:
1. 将复杂的硬件操作封装成简单的接口给应用程序或者用户去使用
2. 将多个进程对硬件的竞争变得有序操作系统发展史
并发: 多个任务看起来是同时运行的
串行:一个任务完完整整地运行完毕,才能运行下一个任务多道技术:(复用=>共享/共用)
1. 空间上的复用:多个任务复用内存空间
2. 时间上的复用:多个任务复用cpu的时间
一个任务占用cpu时间过长会被操作系统强行剥夺走cpu的执行权限:比起串行执行反而会降低效率
一个任务遇到io操作也会被操作系统强行剥夺走cpu的执行权限:比起串行执行可以提升效率
以上为本次学习内容