• pythonNet02套接字的方法以及broadcast 和http协议



    tcp套接字传输特征
    1. 当一端退出时如果另一端阻塞在recv,此时recv会立 即结束阻塞返回空字串
    2. 如果另一端不存在则在调用send发送时会出现
    Broken Pipe异常
    3. 一个监听套接字可以同时连接多个客户端,也可以重 复使用


    网络收发缓冲区
    1. 减少和磁盘的交互
    2. 协调收发速度(数据处理速度)

    * send和recv实际是向缓冲区发送,从缓冲区接收

    TCP粘包

    产生原因 :
    1. tcp以字节流的方式进行数据传输,消息之间没边界
    2. 多次发送的消息被一次接收

    影响 : 如果每次发送的内容是一个独立含义的个体此时 粘包会产生影响

    处理粘包:
    1. 将消息结构化
    2. 在消息结尾添加结束标志
    3. 控制消息发送速度

    基于UDP套接字的服务端

    1. 创建数据报套接字
    sockfd = socket(AF_INET,SOCK_DGRAM)

    2. 绑定地址
    sockfd.bind(addr)

    3. 消息收发
    data,addr = sockfd.recvfrom(buffersize)
    功能:接收UDP消息
    参数:每次最多接收多少字节消息
    返回值:data 收到的消息
    addr 消息发送方的地址

    n = sockfd.sendto(data,addr)
    功能 : 发送udp消息
    参数 : data 要发送的消息 bytes格式
    addr 目标地址
    返回 : 发送的字节数

    4. 关闭套接字
    sockfd.close()


    udp客户端

    1. 创建数据报套接字
    2. 消息发收
    3. 关闭套接字

    cookie

    获取命令行参数

    import sys
    sys.argv 属性获取命令行内容

    * 将命令行参数以字符串形式收集为一个列表

    tcp套接字和udp的区别
    1. 流式套接字是以字节流方式传输数据,数据报则以数 据报形式传输
    2. tcp传输会有粘包,udp不会
    3. tcp保证传输的可靠性,udp不保证
    4. tcp需要listen accept操作,udp不需要
    5. tcp使用send recv收发消息,udp使用
    sendto recvfrom

    补充函数:
    sendall(data)
    功能 参数 同send
    返回值 : 发送成功 None 失败得到异常


    套接字属性

    sockfd.type 套接字类型
    sockfd.family 套接字地质族类型

    sockfd.getsockname() 获取套接字绑定地址

    sockfd.fileno() 获取套接字对应的文件描述符

    文件描述符 : 系统中每一个IO操作系统都会分配一个整数作为编号,该整数即为这个IO操作的文件描述符。

    * 文件描述符示系统识别IO的标志


    sockfd.getpeername() 连接套接字获取连接端地址

    sockfd.setsockopt(level,option,value)
    功能: 设置套接字选项,丰富或者修改套接字属性功能
    参数: level 选项类别 SOL_SOCKET

    option 每个选项类别对应的子选项

    value 对选项设置值

    * 创建套接字后立即设置

    sockfd.getsockopt(level,option)
    功能: 获取套接字选项值
    参数: level 选项类别
    option 每个选项类别对应的子选项
    返回值 : 获取到的选项值

    udp应用之广播

    广播 : 一点发送,多点接收
    广播地址: 每个网段的最大地址为广播地址

    设置可以发送接收广播
    s.setsockopt(SOL_SOCKET,SO_BROADCAST,1)


    cookie

    format()
    功能 : 通过参数合成字符串

    In [1]: s = "{} is a {}".format('Tom','boy')
    In [2]: s
    Out[2]: 'Tom is a boy'

    In [3]: s = "{1} is a {0}".format('Tom','boy')
    In [4]: s
    Out[4]: 'boy is a Tom'

    In [5]: s = "{a} is a {b}".format(a = 'Tom',b = 'boy')
    In [6]: s
    Out[6]: 'Tom is a boy'


    TCP应用之http传输

    http协议 超文本传输协议 应用层协议

    用途 : 网页的获取
    数据的传输

    特点 :
    1. 应用层协议,传输层选择tcp传输
    2. 简单,灵活,很多语言都有http专门接口
    3. 无状态协议,协议本身不要求记录传输的数据
    4. http1.1 支持持久连接

    网页请求过程:
    1. 客户端(浏览器)通过tcp传输 发送http请求给服务 端
    2. 服务端接收到http请求后进行解析
    3. 服务端处理具体请求内容,组织响应内容
    4. 将响应内容以http响应格式回发给浏览器
    5. 浏览器接收响应内容解析展示

    http请求 request

    请求格式

    请求行 : 具体的请求类别和请求路径
    格式 : GET / HTTP/1.1
    请求类别 请求内容 协议版本

    请求类别 每种类别代表要做不同事情
    GET 获取网络资源
    POST 提交一定的信息,得到反馈
    HEAD 只获取响应头
    PUT 更新服务器资源
    DELETE 删除服务器资源
    CONNECT
    TRACE 测试
    OPTIONS 获取服务器性能信息


    请求头 : 对请求内容的基本描述

    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    Cache-Control: max-age=0
    Connection: keep-alive

    (空行)

    请求体: 请求参数或者提交内容

  • 相关阅读:
    RMI笔记
    java 本地方法(JNI)
    java 的SPI机制
    eclipse中的 Compiler compliance level含义
    初步理解JNDI
    大数据5.1
    大数据4.1
    需要攻破的知识点
    大数据4.2 -- hive数据库
    大数据---单词释义
  • 原文地址:https://www.cnblogs.com/sky-ai/p/9794053.html
Copyright © 2020-2023  润新知