网络编程--多线程 , socketserver
Posted wangjun187197
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程--多线程 , socketserver相关的知识,希望对你有一定的参考价值。
内容补充
python2与python3的区别?
""" python3对unicode字符的原生支持 Python2中使用ASCII码作为默认编码方式导致string有两种类型str和Unicode , Python3只支持Unicode的string """ """ py2: unicode v = u"root" 本质上用Unicode存储 (str/bytes) v = "root" 本质上用字节存储 py3: str v = "root" 本质上用unicode存储 bytes v = "root" 本质上用字节存储 """
函数作用域
Python的作用域是通过函数划分的,作用域是在编写完成代码就已经生成.
Python中程序的变量不是在哪个位置都可以访问的,访问权限决定这个变量在哪里赋值的.变量的作用域决定了在那一部分程序可以访问哪个特定的变量名称.
Python的作用域一共有4种:
L (Local) 局部作用域
E (Enclosing) 必包函数外的函数中
G (Global) 全局作用域
B (Built-in) 内建作用域
按照L->E->G->B的规则查找
列表表达式
列表表达式是Python内置的一种强大的生成list的表达式
格式: v = [lambda x:x+i for i in range(10)]
网络
路由器或交换机中的DHCP服务自动分配IP地址:(DHCP;自动为局域网内的电脑分配IP)
IP:用4个"."分开的十进制表示 例:192.168.13.11
IP:192.168.13.86
IPV4
00000000.00000000.00000000.00000000
0~255 0~255 0~255 0~255
IPV6 (目前个人基本用不到)
00000000.00000000.00000000.00000000.00000000.00000000
子网掩码:255.255.255.0
192.168.13.86
255.255.255.0
将挡住的IP位数作为网段
为挡住的部分作为可变的值
网关:路由器中连接交换机的接口
网关IP:192.168.13.1 (默认为1)
网络组成了局域网/城域网/广域网
DNS
网络连接:
-域名解析
www.luffycity.com ==> 47.95.64.113
www.oldboyedu.com ==> 101.200.195.98
-连接
sk = socket.socket()
sk.connect((‘47.95.64.113‘,80))
看上面的代码,那么域名和IP的对应关系在哪里?
本地:
win本地电脑:
C:WindowsSystem32driversetchosts
DNS服务器:全球顶级DNS服务器13台
socketserver
ThreadingTCPServer源码剖析:
初识线程
impor time impor threading def task(a1,a2,a3): time.sleep(2) print("拿快递") def play(): print(‘陪女友玩耍‘) def Take-out food(): print("去拿外卖") #创建一个线程 #让该线程去执行任务:函数 t1 = threading.Thread(target=task,args=(1,2,3)) #去执行吧 t1.start() #创建一个线程 #让该线程去执行任务:函数 t2 = threading.Thread(target=play)) #去执行吧 t2.start() #创建一个线程 #让该线程去执行任务:函数 t3 = threading.Thread(target=Take-out food)) #去执行吧 t3.start() print("玩扇子") print("煽风点火") print("耍贱...")
socket与线程配合
import time import socket import threading def task(conn): time.sleep(5) data = conn.recv(1024) print(data) conn.close() server = socket.socket() server.bind((‘192.168.13.86‘,8000)) server.listen(5) while True: conn,addr = server.accept() t = threading.Thread(target=task, args = (conn,)) t.start()
以上是关于网络编程--多线程 , socketserver的主要内容,如果未能解决你的问题,请参考以下文章