内容回顾

网络编程

  • 概念
  • 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】442. Find All Duplicates in an Array 解题报告(Python& C++)

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

  2. mysql多条件过滤查询之mysq高级查询

    一.什么是高级查询: ① 多条件的过滤查询 简单说,即拼接sql语句,在sql查询语句之后使用: where 条件1 and/or 条件2 and/or 条件3 - ② 分页查询 二.多条件过滤查询: ...

  3. TYPEC转HDMI+PD+USB3.0拓展坞三合一优化方案|CS5266 dmeoboard原理图

    CS5266 Capstone 是Type-C转HDMI带PD3.0快充的音视频转换芯片. CS5266接收器端口将信道配置(CC)控制器.电源传输(PD)控制器.Billboard控制器和displ ...

  4. 基于Spring MVC + Spring + MyBatis的【学生信息管理系统】

    资源下载:https://download.csdn.net/download/weixin_44893902/45603211 练习点设计: 模糊查询.删除.新增 一.语言和环境 实现语言:JAVA ...

  5. Spring企业级程序设计 • 【第4章 Spring持久化层和事务管理】

    全部章节   >>>> 本章目录 4.1 配置数据源资源 4.1.1 JdbcTemplate介绍 4.1.2通过ComboPooledDataSource创建数据源 4.1. ...

  6. 探索 dotnet core 为何在 Windows7 系统需要补丁的原因

    在一些 Windows 7 系统上,根据 dotnet 官方文档,需要安装上 KB2533623 补丁,才能运行 dotnet core 或 .NET 5 等应用.尽管非所有的设备都需要安装此,但这也 ...

  7. 关于java的Excel导入导出之easypoi

    导入easypoi相关jar包,这里的easypoi-base的包也可以不倒入,因为easypoi-web中有依赖easypoi-base会自动导入的 <!-- https://mvnrepos ...

  8. java运算符2

    续: 位运算符(<<,>>,>>>) 1.<<: 3<<2,二进制左移2位,右边用0补齐       3的二进制:00000000 0 ...

  9. 初识python:scoket 单用户互发消息

    实现功能: 启动"服务器".通过"客户端1"连接"服务器",然后互发消息.在此过程中,有"客户端2"连接到"服 ...

  10. Python_多任务:进程、线程、协程

    进程 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体.进程是一种抽象的概念,从来没有统一的标准定义.进程一般由程序 ...