网络编程--多线程 , 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:\Windows\System32\drivers\etc\hosts  

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

时间: 2024-10-30 10:58:25

网络编程--多线程 , socketserver的相关文章

Git的使用及网络编程多线程多进程

Git的使用 1.打开CMD命令行,输入cd Desktop进入桌面 2.输入 mkdir + 'file name'创建文件,如果已有项目则输入 cd + file name进入文件,如果在Git上已有项目并且在已有项目进行修改,则输入cd clone + url 3.如果第一次使用,则先初始化,git init 4. git add + file name 把项目加入文件夹里面 5.git config -global 全局设置(第一次使用的时候设置) 6. git log 查看日志.git

Python网络编程(socketserver、TFTP云盘、HTTPServer服务器模型)

HTTP协议? HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型.HTTP是一个无状态的协议. 通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS 默认HTTP的端口号为80,HTTPS的端口号为443. what? 无状态什么鬼? HTTP无状态协议是指协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面的信息, 则它必须重传,这样可能导致每次连接传送的数据量增大.另一方面,在服务器不需要先前信息时它的应答就

java网络编程——多线程数据收发并行

基本介绍与思路 收发并行 前一篇博客中,完成了客户端与服务端的简单TCP交互,但这种交互是触发式的:客户端发送一条消息,服务端收到后再回送一条.没有做到收发并行.收发并行的字面意思很容易理解,即数据的发送与接收互相不干扰,相互独立.当然,要保证服务端和客户端都能做到收发并行. 业务逻辑 脱离业务逻辑的实践是毫无意义的,先描述一下本实践中的业务逻辑:一个服务端接受多个客户端的连接,连接后,向各个客户端定时发送时间戳数据,同时在并行条件下,接受各个客户端发送来的数据并显示:客户端键盘输入字符串,发送

python之网络编程-多线程

多线程 线程的理论知识 什么是线程 当开启一个进程的时候:内存中开辟空间,加载资源与数据,调用CPU执行,可能还会使用这个空间的资源. 定义:每个进程都有一个地址空间,而且默认就有一个控制线程.进程只是把资源集中到一起(进程可以认为是一个含有代码的空间),而线程才是CPU的执行单位. 多线程:在一个进程中存在多个控制线程,多个控制线程共享该进程的地址空间. 线程vs进程 开启多进程开销大,开启线程开销非常小 开启多进程的速度慢,开启多线程速度快 进程之间数据不能直接共享(通过队列可以),同一个进

黑马程序员_JAVASE_网络编程上

网络模型: OSI模型 TCP/IP模型 网络通信要素 ip地址 端口 通信协议 通信过程 1.找到对方IP地址 2.数据要发送到对方指定的应用程序上,为了标识这些应用程序,用唯一的数字进行标识,这些数字符号就是端口 3.定义通信规则,tcp还是udp还是其他 应用层协议 http,ftp,smtp 解析主机地址: InetAddress ia = InetAddress.getByName("www.baidu.com"); String ip = ia.getHostName();

Python2与Python3的区别/网络编程/socketserver模块中的多线程

一.知识点补充: 1.解释型语言和编译型语言 编译型(目前有两种解释): 先把代码编译成机器码 -> 机器寄存器去运行 :C语言 先把代码编译成XXX -> 计算机找虚拟机执行代码 -> 机器码交给计算机去执行 :C语言,JAVA,C# 解释型: 边解释边执行 2.Python中的作用域 Python中的函数是一个作用域 3.这里规定一下以后写元组的格式: v = (1,2,3,) 1.Python中函数是一个作用域 i=0 for i in range(10): pass print(

py2/py3区别, 列表生成式, 网络编程, socketserver, 线程, uuid模块

一. py2/py3区别    - 编码&字符串        字符串:            py2:                unicode         v = u"root"    本质上用unicode存储(万国码)                (str/bytes)     v = "root"     本质用字节存储            py3:                str                v = "

【LINUX/UNIX网络编程】之简单多线程服务器(多人群聊系统)

RT,Linux下使用c实现的多线程服务器.这个真是简单的不能再简单的了,有写的不好的地方,还希望大神轻拍.(>﹏<) 本学期Linux.unix网络编程的第四个作业. 先上实验要求: [实验目的] 1.熟练掌握线程的创建与终止方法: 2.熟练掌握线程间通信同步方法: 3.应用套接字函数完成多线程服务器,实现服务器与客户端的信息交互. [实验内容] 通过一个服务器实现最多5个客户之间的信息群发. 服务器显示客户的登录与退出: 客户连接后首先发送客户名称,之后发送群聊信息: 客户输入bye代表退

.net网络编程 1.多线程

一 前言 1.为什么网络编程要用到多线程?      在网络编程中经常会遇到网络阻塞或者网络等待等情况,处理这些情况就会等待很长时间,如可不加多线程处理就会出现执行时间过长,容易出现错误,反应迟钝等等状况,使用多线程后就会大大提高程序的健壮性和伸缩新性能. 2.进程和线程的区别 一个程序至少有一个进程,形象点说,你开QQ就是打开了一个进程,但是你还要同时和到几个人聊天,打开好几个聊天窗口,每个聊天窗口就是一个线程,(所以同一进程可以划分为若干个线程,每个线程都有自己的寄存器等等,但是代码区是共享