内容回顾

网络编程

  • 概念
  • 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】861. Score After Flipping Matrix 解题报告(Python & C++)

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

  2. C. Hongcow Builds A Nation

    C. Hongcow Builds A Nation time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  3. 前端性能和加载体验优化实践(附:PWA、离线包、内存优化、预渲染)

    一.背景:页面为何会卡? 1.1 等待时间长(性能) 项目本身包/第三方脚本比较大. JavaScript 执行阻塞页面加载. 图片体积大且多. 特别是对于首屏资源加载中的白屏时间,用户等待的时间就越 ...

  4. salesforce零基础学习(一百一十)list button实现的一些有趣事情

    本篇参考: salesforce零基础学习(九十五)lightning out https://developer.salesforce.com/docs/component-library/docu ...

  5. Generative Adversarial Nets (GAN)

    目录 目标 框架 理论 数值实验 代码 Generative Adversarial Nets 这篇文章,引领了对抗学习的思想,更加可贵的是其中的理论证明,证明很少却直击要害. 目标 GAN,译名生成 ...

  6. <学习opencv>opencv数据类型

    目录 Opencv数据类型: 基础类型概述 固定向量类class cv::Vec<> 固定矩阵类cv::Matx<> 点类 Point class cv::Scalar 深入了 ...

  7. CS5211芯片|EDP to LVDS|CS5211应用方案

    CS5211芯片–EDP to LVDSDisplayPort到LVDS转换器双通道DP输入,双链路LVDS输出CS5211是一个显示端口到LVDS转换器设计的PC机,利用GPU和显示端口(DP) 或 ...

  8. 编写Java程序_找星座朋友应用软件

    一.About the Project 项目介绍 自古以来,人对于恒星的排列和形状很感兴趣,并很自然地把一些位置相近的星联系起来,组成星座.占星术亦称"占星学"."星占学 ...

  9. Office - 0x4004F00C解决方法

    之前用HEU_KMS激活了180天的office 2013(专业版),今天打开突然报错0x4004F00C 大致意思就是提示你:office还有几天将要过期,到时候只能查看文档.表格.ppt,而不能编 ...

  10. SSH公/私秘钥的生成及使用

    如果使用GitHub比较多的朋友,对SSH Key肯定也不陌生,当我们SSH进行代码的pull&push时,往往需要我们配置SSH Key. 如果Linux用的多朋友,肯定对SSH Key都很 ...