网络编程--多线程 , 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()


原文地址:https://www.cnblogs.com/wangjun187197/p/9600976.html