zoukankan      html  css  js  c++  java
  • 网络编程

    1 面向对象的多继承(经典类和新式类)

    python2与python3的区别:

    python2中:经典类

                       新式类(无__mro__)如果自己或自己的前辈只要有人继承object,那么此类就是新式类

    python3:新式类

    2 经典类与新式类的查找顺序不一样

    经典类:一条道走到黑(深度优先)

    新式类:C3算法实现(python2.3中更新的)

     1 class D:
     2 
     3     def bar(self):
     4         print 'D.bar'
     5 
     6 
     7 class C(D):
     8 
     9     def bar(self):
    10         print 'C.bar'
    11 
    12 
    13 class B(D):
    14 
    15     def bar(self):
    16         print 'B.bar'
    17 
    18 class A(B, C):
    19 
    20     def bar(self):
    21         print 'A.bar'
    22 
    23 a = A()
    24 
    25 执行bar方法时
    26 # 首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去D类中找,如果D类中么有,则继续去C类中找,如果还是未找到,则报错
    27 # 所以,查找顺序:A --> B --> D --> C
    28 # 在上述查找bar方法的过程中,一旦找到,则寻找过程立即中断,便不会再继续找了
    29 a.bar()
    经典类多继承
     1 class D(object):
     2 
     3     def bar(self):
     4         print 'D.bar'
     5 
     6 
     7 class C(D):
     8 
     9     def bar(self):
    10         print 'C.bar'
    11 
    12 
    13 class B(D):
    14 
    15     def bar(self):
    16         print 'B.bar'
    17 
    18 
    19 class A(B, C):
    20 
    21     def bar(self):
    22         print 'A.bar'
    23 
    24 a = A()
    25 
    26 print(__mro__)
    新式类多继承

    注意事项:super也是遵循__mro__执行顺序
    二 网络编程

    软件:

    客户端:cs架构

    服务器端:BS架构

    三 实现相互通信

    1 两个人直接连线 通过网线

    2 教室之间的相互通信   通过交换机

    3 与外地的亲戚通信     通过交换机和n个路由器

    四 基于socket模块实现网络通信

    1 为甚么网络通信发送的是字节?而不是字符串?

      py3,send/recv 都是字节

     py2,send/recv 都是字符串

    2 服务器端:

         accept ,阻塞:等待客户机来链接

        recv,阻塞,等待客户端发来数据

    客户端:

       connect 阻塞:一直在连接,直到连接成功才往下运行

       recv,阻塞,等待服务端发来数据

     1 import socket
     2 server=socket.socket()  #创建服务端socket对象
     3 server.bind(('192.168.23.18',80000)) #绑定自己的网址和端口
     4 server.listen(5)  #后面最多可以等5个人
     5 conn,addr=server.accept()# 阻塞,只有有客户端连接上,Conn 是客户端和服务器之间连接的介质 阻塞,等待客户端连接然后进行通信 ,addr是客户端的地址信息
     6 
     7 print("已经有人连接上了")
     8 
     9 data=conn.recv(1024) #1024表示服务器端通过介质来获取数据的时候最多能一次性拿1024字节
    10 print("已经有人发来消息了")
    11 
    12 conn.send(b'stop')# 服务器端给客户端回复一个消息
    13 
    14 conn.close()#与客户端断开连接
    15 
    16 
    17 server.close()#关闭服务端的服务
    服务端
     1 import socket
     2 server=socket.socket()  #创建服务端socket对象
     3 server.bind(('192.168.23.18',80000)) #绑定自己的网址和端口
     4 server.listen(5)  #后面最多可以等5个人
     5 conn,addr=server.accept()# 阻塞,只有有客户端连接上,Conn 是客户端和服务器之间连接的介质 阻塞,等待客户端连接然后进行通信 ,addr是客户端的地址信息
     6 
     7 print("已经有人连接上了")
     8 
     9 data=conn.recv(1024) #1024表示服务器端通过介质来获取数据的时候最多能一次性拿1024字节
    10 print("已经有人发来消息了")
    11 
    12 conn.send(b'stop')# 服务器端给客户端回复一个消息
    13 
    14 conn.close()#与客户端断开连接
    15 
    16 
    17 server.close()#关闭服务端的服务
    客户端

    #### IOS七层模型,各层中的工作

    (1)应用层 http https ssl smtp ftp

    (2)传输层 tcp udp  端口信息  四层路由器 四层交换机
    ​    tcp
    ​        可靠的 面向连接的 全双工的 流式传输 效率低
    ​        三次握手和四次挥手
    ​            三次握手
    ​                把图背下来 syn ack
    ​            四次挥手
    ​                把图背下来 fin ack
    ​        黏包 : (自定义协议)先发送数据的长度,再发送数据
    ​    udp 效率高 不可靠 无连接 基于数据包的传输 能够传输的数据的长度有限
    (3)  网络层     ipv4协议192.168.0.1    ipv6协议 ff2312:f5242:12:1:1:1   网关地址 子网掩码 路由器 三层交换机
       (4) 数据链路层 mac地址 arp(通过ip地址找mac地址),rarp(通过mac地址找ip地址) 网卡  交换机
       (5) 物理层

  • 相关阅读:
    多线程
    事务的概念与四大特性(ACID)
    Error和Exception的区别
    运算符的使用与注意事项(二)
    运算符的使用与注意事项(一)
    GOJS使用--前端拓扑图
    python算法实现分治法demo
    MySQL主从复制配置
    MySQL锁
    show profile查看SQL执行生命周期
  • 原文地址:https://www.cnblogs.com/mlhz/p/9579253.html
Copyright © 2011-2022 走看看