栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python基础学习2

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python基础学习2

多进程

子进程创建默认导入父进程代码。子进程的模块名不是main。注意使用if __name__ == '__main__'语句。

多进程之间默认不共享变量,将公共变量复制,各自拥有各自的变量。
代码:

from multiprocessing import Process

num=0

def run1():
    global num
    num = num + 10
    print('run1:',num)

def run2():
    global num
    num = num + 1
    print('run2',num)


if __name__ =="__main__":
    p1=Process(target=run1)
    p1.start()
    p1.join(10)

    p2=Process(target=run2)
    p2.start()
    p2.join()

    print('main',num)

结果:

run1: 10
run2 1
main 0
TFTP

格式要求:
读写请求:操作码(1:下载/2:上传)【2bytes】,文件名【n bytes】,0【1 byte】,模式【n nytes】,0【1 byte】。
数据包:操作码(3)【2 bytes】,块编号【2 bytes】,数据【512 bytes】
ACK:操作码(4)【2 bytes】,块编号【2 bytes】
ERROR:操作码(5)【2 bytes】,差错码【2 bytes】,差错信息【n bytes】,0【1 byte】。

格式解析:
!:解析的固定开头
H:表示两个字节
b:表示一个字节
xxs:表示xx个字节,xx是数字

'''
使用tftpd64作为服务器。
下载大鸭鸭的图片
'''
import struct
from socket import *
filename = 'ruya.png'
server_ip='192.168.31.70'
send_data=struct.pack('!H{0}sb5sb'.format(len(filename)),1,filename.encode(),0,'octet'.encode(),0)      #下载请求
s=socket(AF_INET,SOCK_DGRAM)
s.sendto(send_data,(server_ip,69))      #发送下载请求至服务器
f=open(filename,'ab')

while True:
    recv_data = s.recvfrom(1024)#接收数据
    #print(recv_data)    #recv_data是【数据,(ip地址,算口号)元组】的格式,数据的前两位是操作码,
    caozuoma,ack_num=struct.unpack('!HH',recv_data[0][:4])# 获取数据块编号
    #print(recv_data[0][0:4])       #recv_datad 中传输的数据的前四个字节是操作码和块编号,
    rand_port = recv_data[1][1]#获取服务器的随机端口
    if int(caozuoma)==5:
        print('文件不存在...')
        break
    print('操作码:{0},ACK:{1},服务器随机端口:{2},数据长度{3}'.format(caozuoma,ack_num,rand_port,len(recv_data[0][4:])))
    f.write(recv_data[0][4:])
    if len(recv_data[0])<516:
        break
    ack_data=struct.pack('!HH',4,ack_num)
    s.sendto(ack_data,(server_ip,rand_port))#回复ack确认包


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/701033.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号