• 网络编程常用模块及方法


    Socket模块

    • 什么是socket

      socket是一个模块,可以写一套C/S架构的套接字

    • 为什么要用socket

      socket套接字会把底层各层协议工作封装好,可以节省开发成本

    • Python中的使用

      内置模块 import socket

    注意:

    客户端与服务端必须遵循:一端发,一端收

    半连接池:

    socketobj.listen(3) 3表示可以等待3个客户端的接入,加上正在服务对象,一共可以支持4个服务

    subprocess模块

    可以通过代码来执行操作系统终端的命令

    返回终端执行命令后的结果

    struct模块

    引发粘包问题

    1.由于网络传输过程中,无法预测对方需要接收的数据长度大小导致前后两次发送数据粘在一起

    2.多次连续发送数据量小,并且时间间隔短的数据一次性打包发送

    解决粘包问题

    1.先将源文件打包为报头,以4字节为标准位传输给客户端,使用struct.pack的方式将文件打包为报文

    2.发送报头,

    3.发送真实数据

    常用方法:

    struct.pack('i',len(文件)) 返回字符串,按照给定格式i把数据转换成字符串(字节流),并返回该字符串

    struct.unpack('i',接收到的字符串) 返回元组,按照给定格式'i'把数据流解析,返回解析结果

    struct_server模块

    可简化TCP与UDP服务端代码

    必须要创建一个类

    必须重写一个handle方法,覆盖原有的handle方法,当客户端链接时,会调用该方法

    socketserver.TCPServer只能同时服务一个客户端

  • 相关阅读:
    分布式服务框架的雪崩问题
    分布式系统中的幂等性
    Exception引起的性能问题
    TFS2017新特性(一)
    云平台架构变迁
    MQ基本概念
    SVN版本管理
    1年内4次架构调整,谈Nice的服务端架构变迁之路
    鏖战双十一-阿里直播平台面临的技术挑战
    统一日志平台初探
  • 原文地址:https://www.cnblogs.com/agsol/p/11699574.html
Copyright © 2020-2023  润新知