python网络编程 day28 网络编程初识 ——socket
1、两个内置函数(装饰器)及类中的魔术方法
-
-
修改绑定方法为类方法,调用方式可以是实例名.方法名()或者类名.方法名()
class Person:
County = "中国"
def __init__(self,name):
self.name = name
-
-
@staticmethod 可以用对象和类调用
-
把外部函数移动到类中,变成静态方法,并且不需要传递self值,
-
-
hasattr:判断内容是否在对象中
-
getattr :获取对象的内容
-
callable :判断对象是否可以被调用
class Person:
County = "中国"
def __init__(self,name):
self.name = name
-
双下划线new **非常重要***** 构造方法,开辟空间,实例化对象的时候在init之前执行
##########################单例模式##################
Class Person:
_instance = None
def __new__(cls,*args,**kwargs):
print("调用我啦")
if Person._instance is None:
Person._instance = super().__new__(cls)
print("开辟一个空间了哦")
return Person._instance
def __init__(self):
print("执行我啦")
p1 = Person() ###"调用我啦" ——》"开辟一个空间了哦"——》"执行我啦"
p2 = Person() ###"调用我啦" -
双下划线call:只要类中有这个call方法,这个类的对象就可以加括号
-
双下划线len 只要类中有这个方法,可以直接len函数来操作类 len(类名)
-
双下划线str :只要类中有这个方法,打印对象的时候,%s做拼接的时候,str做强制转换的时候,调用这个方法,打印这个方法的返回值
-
双下划线repr:str的备胎,%r或者repr的时候就显示这个方法的返回值
二、今日内容
1、网络基础相关的概念
-
不变的:mac地址
-
可变的:ip地址
2、地址解析协议:arp协议
3、网络编程信息交互
#############server端################
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',9001))
sk.listen()
conn,addr = sk.accept()
conn.send(b'hello')
msg = conn.recv(1024)
print(msg)
conn.close()
sk.close()
#############client端#######################
import socket
sk = socket.socket()
sk.connect(('127.0.0.1',9001))
msg = sk.recv(1024)
print(msg)
sk.send(b'byebye')
sk.close()
4、os七层协议(应表会传网数物)
-
应用层
-
表示层
-
会话层
-
传输层
-
网络层
-
数据链路层
-
物理层
-
osi五层
-
应用层 :python代码
-
传输层:port 四层交换机
-
网络层:ipv4 ipv6 路由器 三层交换机
-
数据链路层 : mac arp协议 网卡 二层交换机
-
物理层
-
5、tcp与udp协议
-
tcp:
-
需要建立联接,才能通信
-
占用连接,可靠的传输,消息不会丢失,实时性高
-
建立联接——三次我握手
-
-
断开联接——四次挥手
-
-
-
udp:
-
不许需要建立连接,就可以通信
-
不占用联接
-
-