当前位置: 首页 > news >正文

经典类、新式类,网络编程

一、经典类与新式类

1、在Python2的版本中有经典类和新式类,在Python3的版本中只有新式类

2、经典类和新式类的查找成员的顺序不一样。

  经典类:一条道走到黑(深度优先)

  新式类:c3算法(保留最后的根)

  supper是遵循__mor__执行顺序

二、网络编程

1、基于socket模块实现网络通信

  为什么网络通信发送的是字节而不是字符串

    python3 send/recv 都是字节

    python2 send/recv 都是字符串

  服务端:

    accept,阻塞:等待客户端来连接

    recv , 阻塞:等待客户发来数据

  客户端:

    connect,阻塞:等待连接服务端

    recv , 阻塞:等待服务端发送数据

 

三、简单的用户登录

客户端

 1 import socket
 2 client=socket.socket()
 3 
 4 client.connect(('192.168.13.35',8000)) # 服务端的ip地址以及端口
 5 
 6 name=input("请输入用户名")
 7 pwd=input("请输入密码")
 8 
 9 #向服务端发送数据(发送字节)
10 client.send(name.encode("utf-8"))
11 client.send(pwd.encode("utf-8"))
12 
13 #接受服务端发送的数据
14 responed=client.recv(1024)
15 print(responed.decode("utf-8"))
16 
17 client.close()

服务端

 1 import socket
 2 server=socket.socket()
 3 #创建服务端socket对象
 4 server.bind(("192.168.13.35",8000))
 5 
 6 #可等待的客户端量
 7 server.listen(5)
 8 
 9 #等待客户端连接
10 conn,addr=server.accept()
11 
12 #接受客户端发送的数据
13 usename=conn.recv(1024)
14 usepwd=conn.recv(1024)
15 
16 print(type(usepwd.decode("utf-8")))
17 
18 with open("b.txt","r",encoding="utf-8") as f1:
19     for line in f1:
20         line=line.strip()
21         if line.split(",")[0]==usename.decode("utf-8") and line.split(",")[1]==usepwd.decode("utf-8"):
22             conn.send(b"success to login!!!")
23     else:
24         conn.send(b"faill!!!!")
25 
26 conn.close()
27 server.close()

 

转载于:https://www.cnblogs.com/liaopeng123/p/9579419.html

相关文章:

  • app和bootloader跳转 MSP与PSP
  • 最近的一些心态
  • flex 布局
  • Redis的概念及与MySQL的区别
  • 1078 字符串压缩与解压
  • Go 导入当前项目下的包
  • jmter录制脚本、代理配置和操作
  • Python爬虫教程-31-创建 Scrapy 爬虫框架项目
  • 数据结构(二) 线性表
  • vue使用echarts
  • luogu 1772 物流运输 ZJOI2006 spfa+dp
  • Java快速教程
  • python接口自动化测试二十八:连接SQL sever操作
  • python中如何去掉字符串中的空格
  • jupyter、flask、tornado、djiango安装
  • 自己简单写的 事件订阅机制
  • .pyc 想到的一些问题
  • 【Leetcode】104. 二叉树的最大深度
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • JAVA 学习IO流
  • JavaScript设计模式系列一:工厂模式
  • mysql innodb 索引使用指南
  • Redis 懒删除(lazy free)简史
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spring Cloud Feign的两种使用姿势
  • vagrant 添加本地 box 安装 laravel homestead
  • 动态魔术使用DBMS_SQL
  • 检测对象或数组
  • 如何进阶一名有竞争力的程序员?
  • 微信开源mars源码分析1—上层samples分析
  • 一个SAP顾问在美国的这些年
  • linux 淘宝开源监控工具tsar
  • ​Python 3 新特性:类型注解
  • #include
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (Java)【深基9.例1】选举学生会
  • (Note)C++中的继承方式
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (十一)图像的罗伯特梯度锐化
  • (一)Dubbo快速入门、介绍、使用
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)IOS中获取各种文件的目录路径的方法
  • ***利用Ms05002溢出找“肉鸡
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET CORE Aws S3 使用
  • .net 设置默认首页
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET建议使用的大小写命名原则
  • .NET中的十进制浮点类型,徐汇区网站设计