zoukankan      html  css  js  c++  java
  • Python学习 17day__高级语法

    Xpath

    在xml文件中查找信息的一套规则/语言,根据xml元素或者属性进行遍历
    Xpath开发工具
    开源的Xpath表达式编辑工具:XMLQuire
    Chrome插件:Xpath Helper
    Firefox插件:Xpath Checker

    选取节点
    nodename: 选区此节点的的所有子节点
    /: 从节点开始读取
    //: 选取节点,不考虑位置
    .: 选取当前节点
    ..: 选取当前节点的父节点
    @: 选取属性

    网络编程

    SOCKET编程

    socket(套接字):s是一个网络通信的端点,能实现不同主机的进程通信
    通过IP+端口定位对方并发送消息的通信机制
    分为UDP编程和TCP编程

      UDP编程

        Server端流程
         1 建立socket,socket是负责具体通信的一个实例
         2 绑定,为创建的socket指派固定的端口和ip地址
         3 接受对方发送内容
         4 给对方发送反馈,此步骤为非必须步骤
        Client端流程
         1 建立通信的socket
         2 发送内容到指定服务器
         3 接受服务器给定的反馈内容

        服务器端程序要求永久运行,一般用死循环处理


    服务器端
     1 # Socket模块负责socket编程
     2 import socket
     3 '''
     4 Server端流程
     5     1 建立socket,socket是负责具体通信的一个实例
     6     2 绑定,为创建的socket指派固定的端口和ip地址
     7     3 接受对方发送内容
     8     4 给对方发送反馈,此步骤为非必须步骤
     9 '''
    10 def serverFunc():
    11     # 建立Socket
    12 
    13     # SOCKET.AF_INET:使用ipv4协议族
    14     # socket.SOCK_DGRAM: 使用UDP协议通讯
    15     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    16 
    17     # 绑定ip和port
    18 
    19     # 127.0.0.1代表本机
    20     # 7852:指定端口号,可以改变
    21     # 地址是一个tuple类型(ip, port)
    22     addr = ('127.0.0.1', 7853)
    23     sock.bind(addr)
    24 
    25     # 接受对方消息
    26     # recvfrom接受的返回值是一个tuple,前一项表示数据,后一项表示地址
    27     # 参数的含义是缓冲区大小
    28 
    29     data, addr = sock.recvfrom(500)
    30 
    31     print(data)
    32     print(type(data))
    33 
    34     # 发送过来的数据是bytes格式,必须通过解码才能得到str格式内容
    35     # decode默认参数是utf-8
    36     text = data.decode()
    37     print(type(text))
    38     print(text)
    39 
    40     # 给对方返回的消息
    41     rsp = " 没呢"
    42 
    43     # 发送的数据需要编码成bytes格式,默认为utf-8
    44     data = rsp.encode()
    45     sock.sendto(data, addr)
    46 
    47 if __name__ == '__main__':
    48     print("Starting server........")
    49     serverFunc()
    50     print("ENDING server..............")

    客户端
     1 import socket
     2 
     3 '''
     4 Client端流程
     5     1 建立通信的socket
     6     2 发送内容到指定服务器
     7     3 接受服务器给定的反馈内容
     8 
     9 '''
    10 
    11 def clienfFunc():
    12     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    13     text = "吃没"
    14 
    15     # 发送的数据必须是bytes格式
    16     data = text.encode()
    17 
    18     # 发送
    19     sock.sendto(data, ("127.0.0.1", 7853))
    20 
    21     data, addr = sock.recvfrom(200)
    22 
    23     data = data.decode()
    24     print(data)
    25 
    26 if __name__ == '__main__':
    27     clienfFunc()

    TCP编程

      面向连接的传输,即每次传输之前需要先建立一个链接
      客户端和服务器端两个程序需要编写
      Server端的编写流程
       1.建立socket负责具体通信,这个socket其实只负责接受对方的请求
       2.绑定端口和地址
       3.监听接入的范文socket
       4.接受访问的socket,可以理解接受访问即建立了一个通讯的连接通路
      5.接受对方的发送内容,利用接受到的socket接受内容
       6.如果有必要,给对方发送反馈内容
       7.关闭连接通路
      Client端流程
       1.建立通信socket
       2.连接对方,请求跟对方建立通路
       3.发送内容到对方服务器
       4.接受对方的反馈
       5.关闭连接通路

    tcp 服务端
     1 import socket
     2 
     3 def tcp_srv():
     4     # 建立socket负责通信
     5 
     6     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     7     # 绑定端口和地址
     8     addr= ("127.0.0.1", 8998)
     9     sock.bind(addr)
    10     # 监听介入的访问socket
    11     sock.listen()
    12 
    13     while True:
    14         # 接受访问的socket
    15         skt, addr = sock.accept()
    16         # 接受对方的发送内容,利用接收到的socket接收内容
    17         msg = skt.recv(500)
    18         # 接受到的是byets格式内容
    19         msg = msg.decode()
    20 
    21         rst = "Receiver msg :{0}from{1}".format(msg, addr)
    22         print(rst)
    23         # 如果有必要,给对方返回反馈信息
    24         skt.send(rst.encode())
    25         # 关闭连接通路
    26         skt.close()
    27 
    28 if __name__ == '__main__':
    29     print("Stating tcp server.......")
    30     tcp_srv()
    31     print("Ending tcp server........")

    tcp 客户端

     1 import socket
     2 
     3 def tcp_clt():
     4     # 建立通信socket
     5     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     6     # 连接对方,请求跟对方建立通路
     7     addr = ("127.0.0.1", 8998)
     8     # 发送内容到对方服务器
     9     msg = "I Love Python"
    10     sock.send(msg.encode())
    11     # 接受对方的反馈
    12     rst = sock.recv(500)
    13     print(rst.decode())
    14     # 关闭连接通路
    15     sock.close()
    16 
    17 if __name__ == "__main__":
    18     tcp_clt()

    FTP编程

      ftp :文件传输协议
      通途:制定一些特殊的上传下载文件的服务
      用户分类: 登陆ftp服务器必须有一个账号
       Real账户:注册账户
       Guest账户:可能临时对某一类人的行为进行授权
       Anonymous账户:匿名帐户,允许任何人
      FTP工作流程
       客户端连接远程主机上的ftp服务器
       客户端输入用户名和密码
       客户端和服务器进行各种文件传输和信息查询操纵
       客户端从远程ftp服务器推出,结束传输
      FTP文件文件表示
       分三段表示ftp服务器上的文件
       HOST:主机地址,以ftp开头
       DIR:目录,表示文件所在本地的路径、
       File: 文件名称

  • 相关阅读:
    [USACO18OPEN]Talent Show
    Linux关机、重启命令
    [SHOI2014]概率充电器
    mount新磁盘
    [JLOI2012]时间流逝
    创建、删除swap分区
    牛客网NOIP赛前集训营-普及组(第二场)
    从show slave status 中1062错误提示信息找到binlog的SQL
    [USACO18OPEN]Out of Sorts P 冒泡排序理解之二
    ORA-28040: No matching authentication protocol
  • 原文地址:https://www.cnblogs.com/Burtit/p/9483847.html
Copyright © 2011-2022 走看看