客户端向服务端发送请求,这是第一次握手,在此之前客户端一直处于监听状态 服务端收到请求后给客户端回应,并将与之相对应的信息一起发生给客户端,第二次握手 客户端收到数据消息时,必须再给服务端发送接收成功的消息,即服务端需要接收到确认消息,第三次握手成功!建立链接 四次挥手,断链接 客户端(或服务端)向服务端发出请求 第一次挥手 服务端收到请求后给客户端发送收到请求的确认信息, 第二次挥手 由于客户端可能存在没有把数据接收完整,服务器还没有完全把数据都发送给客户端,等服务端把数据处理完成发送给客户端,第三次挥手 客户端再收到服务端的断链接消息后再把断链接消息要发送给服务端,就是服务端确认消息,断开链接,第四次挥手 但服务器收不到客户端发送的收到信息时,在一定时间内会等待,一定时间的再次发送数据,直到时间结束,确定客户端退了或挂了,才会将 与之相关的数据进行清除,断开。 PS: IP 地址:是唯一标识接入互联网的一台计算机 port端口:用来唯一标识一台计算机上应用程序 ip+port:就是唯一标识互联网一台计算机上的某个应用程序 应用层:协议有HTTP协议 FTP协议 知识点补充: 时间类型不能直接用json转化为字符串,会报错,必须自己手动转 import json from datetime import datetime,date #print(datetime.today()) 年月日 时分秒 # print(date.today()) 年月日 #isinstance 判断一个对象是否是某个类的实例 #issubclass 判断一个类是否是某一个类的子类 或子孙类 class MyJson(json.JSONEncoder): def default(self, o): if isinstance(o,datetime): return o.strftime('%Y-%m-%d %X') elif isinstance(o,date): return o.strftime('%Y-%m-%d') else: return super().default(self,o) #调用了super(),父类中有default()这个方法 但是由于我自己定义了,所以优先查找自己的属性方法 即对父类中的default()方法进行了拦截 从而也证明了优先查找自己属性,再去查找父类,内置, res = {'c1':datetime.today(),'c2':date.today()} print(json.dumps(res,cls=MyJson))
转载于:https://www.cnblogs.com/Fzhiyuan/p/11312104.html