zoukankan      html  css  js  c++  java
  • 网络编程常用模块及方法

    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只能同时服务一个客户端

  • 相关阅读:
    查看数据库中指定用户下每个表占的实际空间大小
    数据库中查询列数据是否有重复
    oracle查看数据库的字符集
    【转】oracle数据库中varchar2陷阱
    cursor详解
    vs报算术运算溢出的错误
    count(1)比count(*)效率高
    基于NPOI的Execl导入导出例子
    day4-2数组及方法
    day4-1深入理解对象之创建对象
  • 原文地址:https://www.cnblogs.com/agsol/p/11699574.html
Copyright © 2011-2022 走看看