人工智能学习之python网络编程与多任务和进程

网络    实现资源共享 信息传递 的虚拟平台

要使用编程实现多台计算机的网络通讯  需要具备网络编程的三个要素

1.IP地址  :设备在网络中的唯一标识   ipv4(4字节 10 进制   一个 byte -128 127)一般 0 1 2 255 不用  可能被设置为网关
                                                    ipv6   8字节16进制
                    linux 与mac 使用 ifconfig windows 使用 ipconfig   后面加-all 可以查mac地址  物理地址 

2.端口  :  进程在设备上的唯一标识    0 ~ 65535     
              用于标识 进程的逻辑地址  通过端口 找到指定的进程   端口是传输数据的通道
    每运行一个程序都会有一个端口号   
    知名端口号: 0 -1023
    动态端口号: 102465535

3.协议:     : 通讯规范
    分类:
        tcp协议特点: 面向有连接 采用次节流的方式进行数据传输 安全可靠 效率相对较低 区分服务器和客户端 
        udp 协议特点:面向无连接 采用数据报包的方式 每个包不超过64kb 不安全 效率相对较高   叫发送端和接收端
    tcp协议 : 必须 先建立连接  在传输数据 后关闭连接
                  三次握手:建立传输通道    
                  四次挥手:双向的双方都得发送一次 关闭请求
    

192 176 10 局域网

socket 套接字 :  
进程之间的网络通讯工具    
导包  import sockst

网络编程 :  也叫网络通讯 ,socket通讯 即通讯双方都都有自己的socket对象
数据在socket 直接通讯,数据报包(udp)协议 或者字节流(tcp协议)的形式进行传输


TCP 程序开发流程:
服务器端开发流程:
创建服务器端socket对象                                       s  =  socket.socket()
绑定ip地址和端口号    元组(ip,端口号)                      s.bind(ip,端口)
设置监听数                    最大监听数                       s.listen(数字)
等待客户端申请建立连接  (等待接受)      拆包            a,b =s.accept()
给客户端发送数据    b是将数据转化为2进制的            a.send(b"".encode('UTF-8'))     # 发出指令 字符串前要带 b'里面是英文'   或者"里面是中文".encode('UTF-8')
接受客户端的信息并打印    1024为单次会话上线        data = a.recv(1024).decode('UTF-8')
释放资源  (服务器不关闭 一般不用写)                         a.close()

细节 客户端与服务器通过()bytes)字节流的形式进行实现   

客户端开发流程:
创建客户端socket对象                                     c  =  socket.socket()
连接服务器端,指定的服务器端的ip 接口号             c.connect((ip,端口))
接收服务器端的信息打印                                        data = c.recv(1024).decode('UTF-8')
给服务器发消息            
释放资源 


编码与解码:

编码
把我们看的懂的转成看不懂的
'字符串'.enconde(码表)

解码
把我们看不懂的转为我们看得懂的
二进制.deconde(码表)

英文 字母 符号 无论什么码表都只占用 1个字节  gbk 中文占 2字节  utf 8 占3字节

只要乱码 就是 编解码不同

二进制数据特殊写法,即  b'数字 字母 符号'   中文无效

encode()  里面不写 默认UTF-8   


多任务 : 同一时间内 执行多个任务
    两种表现形式:
              并发: 一段时间内 交替执行任务
              并行: 在一段时间呢,真正的同时一起执行多个任务


进程:
    概念:cpu资源分配的最小单位, 操作系统进行资源分配调度运行的最小单位
        一个正在运行的程序就是一个进程
    作用:
   一个进程运行后又创建了一个进程为子进程

进程的创建步骤:
    1.导包 import multiprossing
    2. 通过进程类 实例化对象   p1 = multiprocessing.Process(target=函数名)
    启动进程执行对象              p1.star()


进程编号:唯一标识一个进程 方便管理进程   程序是释放后 进程id也会释放
目的:验证父进程 和子进程的关系   方便管理
os.getpid()  查看当前进程的 进程id
os.getppid()  
  细节:   main中创建进程 如果没有特殊的指定他的父进程都是main进程

    而main进程的父进程都是pycharm 的程序pid


注意:        进程之间不共享全局变量         数据之间是相互隔离的  子进程相当于父进程的 副本 会将父进程 的main外资源拷贝一份  即 各是各的
    默认情况下  主进程会等待所有子进程结束再结束 
         如果要设置主进程结束 子进程同步关闭  1. 设置守护进程(设置完毕后 若 主进程结束 子进程直接结束)  p1.daemon=True
                        2.强制关闭子进程,可以导致变成僵尸进程 交给python解释器自动回收   p1.terminate()  销毁子进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值