python3.5入门笔记(三)--------反射、断言、socket通信、socketserver单/多并发

本文深入探讨Python中的反射机制,如何通过字符串操作类的属性和方法,网络通信的基本原理,包括端口与IP的关系,以及socket编程中的高级技巧如解决粘包问题和使用socketserver实现多并发。此外,还介绍了断言的使用场景和重要性。

添加小程序,兑换各种视频教程/数据资源。

(一)反射:如根据输入的字符串判断、设置、删除,获取在类中有映射对于的动态方法/静态属性。即将字符穿反射在类属性/方法在内存的地址。

1.例如:  

           def bulk(self):

                print("给类新增一个方法%s"%self.name)

           class Dog(object):

                def __init__(self,name):

                      self.name=name

                def eat(self,food):

                      print("%s is eating %s"%(self.name,food))

           d=Dog("板栗")

           choice=input("请输入:").strip()        #输入的是字符串。

           if hasattr(d,choice):                            #判断在实例化类d中是否有对应字符串名映射的动态方法/静态属性,如eat/name。

              func=getattr(d,choice)                     #获取实例化d中映射的动态方法/静态属性。

              delattr(d,choice)                 #删除映射的静态属性/动态方法

              func("骨头")                                     #如果是动态方法就func()函数调用,如果是静态方法,就setattr(d,choice,"新的值")

           else:

              setattr(d,choice,bulk)     #bulk可以是函数,也可是添加静态属性新的值。

              a=getattr(d,choice)    

              a(d)        #如果输入的字符串在类中没有映射的方法,就给类创建一个talk方法。

(二)网络通信:一个电脑最多65535个端口,一个网卡一个IP,一台电脑可以有多个网卡(IP)。

 

注意:socket.SOCK_RAW:修改IP地址头,可伪造IP地址。如实现'洪水攻击',

socket服务端与客户端模拟ssh通信:

 

 

(三)断言:后面的代码依赖前面的,需要断言,决定是否执行后面的代码。

如:assert type(a) is str

       print("这段代码的打印是由断言的true/false决定的!")

相当于:if type(a) is not str:

                    exit()

              print("这段代码的打印是由条件判断的true/false决定的!")

(四)socket粘包:即服务器多次连续send数据给服务器会出现粘包状态。

      解决:1. 两次send数据之间time.sleep(0.5)延迟发送send。

                 2. 两次send数据之间接收一次客户端接收到上一次数据返回的信息。

(五)socketserver:多/单并发(多个客户端同时连接该服务端,该服务器可以同时处理多个客户端,不需要客户端排队),即对socket的再封装。

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值