python学习day35笔记
2021/7/19 22:05:28
本文主要是介绍python学习day35笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
socket抽象层
socket,又称为套接字 socket是在应用层(用户)和传输层(tcp、udp)之间的一个抽象层 socket把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用 把socket当做一个函数,不考虑它如何实现,只需要知道如何操作
服务端
为客户端提供服务,同时只能服务一个客户端 server -> 服务端 c/s -> client(客户端) b/s -> browser(浏览器)
服务端代码一
import socket server = socket.socket() # 第一个socket是模块名,第二个socket是类名,类名()实例化产生对象 # socket类可以传入参数family、type # family = socket.AF_INET # type = socket.SOCK_STREAM -> tcp协议 server.bind(('127.0.0.1',8080)) # bind必须传入一个参数,用于绑定监听的地址,也是用户访问的地址 server.listen(5) # listen监听,半连接池,里面是客户端排队与服务端进行连接的最大数量,强调:并不是同时服务5个 sock,addr = server.accept() # accept接受信息,sock、addr是accept返回值 # sock指当前连接对象,addr指客户端的地址->ip+port print(sock) print(addr) data = sock.recv(1024) # recv接收,1024是一次最多接收的字节数 sock.send(data.upper()) # send发送,将客户端发送的字节数据大写后回应给客户端 sock.close() # 关闭当前对象的连接 server.close() # 关闭服务端连接
服务端代码二,加入链接循环
import socket server = socket.socket() server.bind(('127.0.0.1',8080)) server.listen(5) while True: sock,addr = server.accept() print(sock) print(addr) while True: try: data = sock.recv(1024) print(data) if len(data) == 0: break sock.send(data.upper()) except Exception as e: print(e) break sock.close() server.close()
服务端代码,udp协议
import socket server = socket.socket(type=socket.SOCK_DGRAM) # SOCK_DGRAM -> udp服务端 # SOCK_STREAM -> tcp服务端 server.bind(('127.0.0.1',8080)) while True: data, client_addr = server.recvfrom(1024) # client_addr:客户端地址 print(data) print(client_addr) server.sendto(data.upper(),client_addr) server.close()
客户端
除了服务端之外的都叫客户端
客户端代码一
import socket client = socket.socket() # 调用socket类名实例化产生对象 client.connect(('127.0.0.1',8080)) # connect连接,括号内填入连接的地址 client.send(b'sb') # sent发送数据,发送二进制的sb data = client.recv(1024) # 接收服务端返回的结果 client.close() # 关闭客户端连接
客户端代码二,加入通信循环
import socket client = socket.socket() client.connect(('127.0.0.1',8080)) while True: input_data = input('请输入要传输的数据:(q to quit)').strip() if not input_data:continue if input_data == 'q': break client.send(input_data.encode('utf-8')) input_data = client.recv(1024) print(input_data) client.close()
客户端代码,udp协议
import socket client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) while True: msg = input('>>:').strip() client.sendto(msg.encode('utf-8'),('127.0.0.1',8080)) data, server_addr = client.recvfrom(1024) # 接收服务端返回的数据 # data -> 数据,server_addr -> 服务端地址 print(data) client.close()
流程
服务端: socket() # 调用socket得到一个socket对象 bind() # 绑定ip获得一个端口 listen() # 监听客户端 accept() # 接受客户端发起请求,如果没请求则阻塞直到客户端连接 read() # 读取用户发送的数据 write() # 回应数据同时返回read继续接受数据 read() # 读取到客户端结束连接 close() # 结束连接 客户端: socket() # 调用socket得到一个socket对象 connect() # 对服务端发起连接后建立连接 write() # 对服务端发送数据 read() # 接受服务端回应的数据同时返回write继续发送数据 close() # 结束连接
http协议
浏览器中有http协议 http是处于tcp、udp协议之上的应用层协议
进程的概念
进程是系统进行资源分配和调度的基本单位 进程是线程的容器 进程是正在运行的程序的实例,进程是动态的 进程不是实际干活的人,真正干活的是线程
程序和进程
程序是静态的,没有生命周期 进程是动态的,是程序在处理机上的一次执行过程,有生命周期 同一个程序执行两次,就会在操作系统中出现两个进程,所以我们可以同时运行一个软件,分别做不同的事情也不会混乱
进程调度
先来先服务调度算法 短作业优先调度算法 时间片轮转法 多级反馈队列
阻塞
i/o密集型 io阻塞 i:input o:output 计算密集型
进程的三种状态
就绪态 运行态 阻塞态
线程
线程是操作系统执行的最小单位
协程
解决单线程下的并发问题 协程是用户态(程序员)下的线程
常用端口号
1.HTTP协议代理服务器常用端口号:80/8080/3128/8081/9098 2.SOCKS代理协议服务器常用端口号:1080 3.FTP(文件传输)协议代理服务器常用端口号:21,20 4.Telnet(远程登录)协议代理服务器常用端口号:23 5.HTTP服务器,默认端口号为80/tcp(木马Executor开放此端口) 6.HTTPS(securely transferring web pages)服务器,默认端口号为443/tcp 443/udp 7.Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口) 8.FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口) 9.TFTP(Trivial File Transfer Protocol),默认端口号为69/udp 10.SSH(安全登录)、SCP(文件传输)、端口号重定向,默认的端口号为22/tcp 11.SMTP Simple Mail Transfer Protocol(E-mail),默认端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口) 12.POP3 Post Office Protocol(E-mail),默认端口号为110/tcp 13.Webshpere应用程序,默认端口号为9080 14.webshpere管理工具,默认端口号9090 15.JBOSS,默认端口号为8080 16.TOMCAT,默认端口号为8080 17.WIN2003远程登录,默认端口号为3389 18.Symantec AV/Filter for MSE,默认端口号为 8081 19.Oracle 数据库,默认的端口号为1521 20.ORACLE EMCTL,默认的端口号为1158 21.Oracle XDB(XML 数据库),默认的端口号为8080 22.Oracle XDB FTP服务,默认的端口号为2100 23.MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp 24.MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp 25.Kibana 配置项,server.port:默认的端口号为5601 26.DNS 53/udp 27.MYSQL 3306/tcp
这篇关于python学习day35笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程