zoukankan      html  css  js  c++  java
  • day28

    1.内容回顾

    # 网络概念
    # 网络架构
       # C/S client-server
           #
       # B/S browser-server
           # web服务
       # B/S是特殊的C/S

    # 物理设备
       # 网卡   mac地址 全球唯一的物理地址
       # 交换机 完成局域网内的多台机器之间的通信
               # 单播 组播 广播
               # 只能识别mac地址
               # arp协议(地址解析协议) :
                          # 通过ip地址获取它的mac地址
                          # 由交换机完成的
                          # 广播 单播
       # 路由器 完成局域网与局域网之间的联系
               # 能识别ip地址
               # 网段
               # 网关ip
                   # 访问局域网外部服务的一个出口ip
       # ip地址在网络上定位一台机器
           # ipv4
           # ipv6
       # port能够在网络上定位一台机器上的一个服务
           # 0-65535

    2.tcp协议和udp协议

    # 概念
    # tcp协议 -- 打电话
       # 可靠 慢 全双工通信
       # 建立连接的时候 : 三次握手
       # 客户端-(请求连接)-服务端-(同意链接,请求连接)-客户端-(同意链接)-服务端
       # 断开连接的时候 : 四次挥手
       # 客户端-(请求断开)-服务端-(同意断开)-(请求断开)-客户端-(同意断开)-服务端
       # 在建立起连接之后
           # 发送的每一条信息都有回执
           # 为了保证数据的完整性,还有重传机制
       # 长连接 :会一直占用双方的端口
       # IO(input,output)操作,输入和输出是相对内存来说的
           # write send - output
           # read recv   - input
       # 能够传递的数据长度几乎没有限制
       
       # 应用场景
       # TCP 文件的上传下载(发送邮件、网盘、缓存电影)    

    # udp协议 -- 发短信
       # 无连接的 速度快
       # 可能会丢消息
       # 能够传递的数据的长度是有限的,是根据数据传递设备的设置有关系

       # 应用场景
       # UDP 即时通信类的(qq、微信、飞秋)  
       
    # osi七层模型
    # 应用层
       # 表示层
       # 会话层
       # 传输层
       # 网络层
       # 数据链路层
       # 物理层

    # osi五层协议     协议                 物理设备
       # 应用层     http https ftp smtp
       #             python代码 hello
       # 传输层     tcp/udp协议 端口     四层交换机、四层路由器
       # 网络层     ipv4/ipv6协议         路由器、三层交换机
       # 数据链路层 mac地址 arp协议     网卡 、交换机
       # 物理层
    # 代码部分
    # socket是什么
      # socket 套接字
           # python     socket模块   完成socket的功能
           # 工作在应用层和传输层之间的抽象层
               # 帮助我们完成了所有信息的组织和拼接
           # sokcet对于程序员来说 已经是网络操作的底层了
           # socket历史
               # 同一台机器上的两个服务之间的通信的
                   # 基于文件
               # 基于网路的多台机器之间的多个服务通信
               
       # 2.使用socket完成tcp协议的web通信
       
    # server.py
    import socket

    sk = socket.socket()
    sk.bind(('127.0.0.1',9000))
    sk.listen()    # n 允许多少客户端等待
    print('*'*20)
    while True:   # outer
       conn,addr = sk.accept()    # 阻塞
       print(addr)
       while True:   # inner
           msg = conn.recv(1024).decode('utf-8')
           if msg.upper() == 'Q': break
           print(msg)
           inp = input('>>>')
           conn.send(inp.encode('utf-8'))
           if inp.upper() == 'Q':
               break
       conn.close()
    sk.close()


    # client.py
    import socket

    sk = socket.socket()

    sk.connect(('127.0.0.1',9000))
    while True:
       inp = input('>>>')
       sk.send(inp.encode('utf-8'))
       if inp.upper() == 'Q':
           break
       msg = sk.recv(1024).decode('utf-8')
       if msg.upper() == 'Q': break
       print(msg)
    sk.close()

       # 3.使用socket完成udp协议的web通信
       
    # server.py
    import socket
    sk = socket.socket(type = socket.SOCK_DGRAM)
    sk.bind(('127.0.0.1',9000))
    while True:
       msg,client_addr = sk.recvfrom(1024)
       print(msg.decode('utf-8'))
       msg = input('>>>').encode('utf-8')
       sk.sendto(msg,client_addr)
    sk.close()

    # client.py
    import socket

    sk = socket.socket(type=socket.SOCK_DGRAM)
    while True:
       inp = input('>>>').encode('utf-8')
       sk.sendto(inp,('127.0.0.1',9000))
       ret = sk.recv(1024)
       print(ret)
    sk.close()

     

  • 相关阅读:
    [杭电_HDU] 2013
    动态调整线程数的python爬虫代码分享
    wampserver 配置的几个坑(雾
    wampserver apache 403无权限访问 You don't have permission to access /index.html on this server
    [爬坑日记] 安卓模拟器1903蓝屏 没开hyper-v
    [单片机] ESP8266 开机自动透传
    [操作系统] 死锁预防和死锁避免
    [linux] 手机Deploy linux 桌面中文乱码
    XHTML基础
    JDBC_c3p0连接池
  • 原文地址:https://www.cnblogs.com/usherwang/p/12983843.html
Copyright © 2011-2022 走看看