内容回顾

网络编程

  • 概念
  • B/S C/S架构
    • B/S browser server
    • C/S client 装客户端使用的 server远程服务器的
  • osi七层协议

今日内容

  • tcp协议的编程

    • 如何在连接内多和客户端说几句

    • 能够接收多个客户端的请求

    • import socket
      
      sk=socket.socket()
      sk.bind(('127.0.0.1',9000))
      sk.listen() #就可以等人来连接了 while True:
      conn,addr=sk.accept() #能和多个客户端握手了
      print('conn:',conn)
      while True:
      send_msg=input('>>>')
      conn.send(send_msg.encode('utf-8'))
      if send_msg.upper()=='Q':
      break
      msg=conn.recv(1024).decode('utf-8')
      if msg.upper() == 'Q':
      break
      print(msg)
      conn.close() #挥手 断开连接 sk.close()
      import socket
      
      sk=socket.socket()
      sk.connect(('127.0.0.1',9000)) while True:
      msg=sk.recv(1024)
      msg2=msg.decode('utf-8')
      if msg2.upper()=='Q':
      break
      print(msg,msg2)
      send_msg=input('>>>')
      sk.send(send_msg.encode('utf-8'))
      if send_msg.upper()=='Q':
      break sk.close()
  • udp协议的编程

    import socket
    
    sk=socket.socket(type=socket.SOCK_DGRAM) #创建套接字
    sk.bind(('127.0.0.1',9000)) #绑定端口
    while True:
    msg,addr=sk.recvfrom(1024) #被动等待
    print(msg.decode('utf-8'))
    msg=input('>>>')
    sk.sendto(msg.encode('utf-8'),addr)
    import socket
    
    sk=socket.socket(type=socket.SOCK_DGRAM) #创建套接字
    server=(('127.0.0.1',9000)) while True:
    msg = input('>>>')
    if msg.upper()=='Q':
    break
    sk.sendto(msg.encode('utf-8'),server)
    msg=sk.recv(1024).decode('utf-8')
    if msg.upper()=='Q':
    break
    print(msg)
  • 粘包现象

    • 两条连续发送的数据黏在一起了
    • 只出现在tcp协议中
      • 因为tcp协议 多条消息之间没有边界,并且还有一大堆优化算法
      • 发送端:两条消息都很短,发送的间隔时间也非常短
      • 接收端:多条消息由于没有及时接收,而在接收方的缓存短 堆在一起导致的粘包现象
    • 网络最大带宽限制 MTU=1500字节
    • tcp发多大都行 因为会在中途拆分
  • struct模块

  • 选课系统讲解I

代码总行数2856+174=3030行

python29day的更多相关文章

随机推荐

  1. 【LeetCode】18. 4Sum 四数之和

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:four sum, 4sum, 四数之和,题解,leet ...

  2. 【LeetCode】290. Word Pattern 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  3. 【LeetCode】421. Maximum XOR of Two Numbers in an Array 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 依次遍历每一位 前缀树 日期 题目地址:https://lee ...

  4. EMA

    目录 源 设置 结果 源 Exponential moving average (EMA) 是一个非常有用的trick, 起到加速训练的作用. 近来发现, 该技巧还可以用于提高网络鲁棒性(约1% ~ ...

  5. .Net Core 3.1 WebApi使用Swagger生成Api文档

    用swagger生成Api文档 1.安装Swashbuckle.AspNetCore 右键单击"解决方案资源管理器" > "管理 NuGet 包"中的项目 ...

  6. ATA考试

    一.确定机房作为ATA考试机器的数量. (1)确定本次ATA考试本校每个机房上报了多少台机器. ATA考试机的使用总数量不包含ATA管理机器.在上报机房机器数量的时候,在      机房的总数量上减去 ...

  7. games101 - 4 - Ray Tracing

    games101 - 4 - Ray Tracing 目录 games101 - 4 - Ray Tracing 为什么需要Ray Tracing Recursive (Whitted-Style) ...

  8. 远程连接PostgreSQL

    在华为云上安装了PostgreSQL,本地使用pgAdmin客户端来访问PostgreSQL 首先,需要在华为云服务器上,放开访问PostgreSQL的5432端口,否则会报请求超时 通过创建安全组来 ...

  9. spring boot 使用 mybatis 开启事务回滚 的总结

    1.前言 以前没有使用mybatis,可以关闭自动提交,然后做sql操作,对操作进行catch捕获异常, 如果没有异常则commit 提交 ,有异常则 rollback 回滚,新增的数据则删除 ,修改 ...

  10. [vscode] os.getcwd(),调试和命令行运行的结果不一致

    问题描述: 调试和命令行运行的时候工作目录不一致 这会导致一个问题,我想从上级目录导入模块的话,F5调试就会找不到模块,而命令行则没问题 那么我该如何调试呢? 目录结构: top  └ folder_ ...