亲宝软件园·资讯

展开

python笔记28(TCP,UDP,socket协议)

cuiyongchao007 人气:0
## 今日内容 1、TCP协议 协议的特点:三次握手,四次挥手; 2、UDP协议 3、OSI七层模型:每层的物理设备,每一层协议。 4、代码部分: ①介绍socket; ②使用socket完成tcp协议的web通信; ③使用socket完成udp协议的web通信。 ### 1、TCP协议 ``` 1、可靠,慢,全双工通信 2、建立连接的时候,三次握手 3、断开连接的时候,四次挥手 4、在建立起连接后 发送的每条信息都有回执 为了保证数据的完整性,还有重传机制 5、长连接:会一直占用双方的端口 6、I/O操作(input,output),输入输出相对内存来说的。 write,send:输出 output read,recv:输入input 能够传输的数据没有限制 ``` ### 2、UDP协议 ``` 1、无连接的,速度快 2、可能会丢消息 能够传输的数据长度有限的,是根据数据传输设备设置有关(MTU) 应用场景: TCP:文件的上传,下载(邮件,网盘,缓存电影) UDP:即时通信(QQ,微信) ``` ### 3、OSI7层模型 ```python 应用层 :http,https,ftp,smtp 表示层 会话层 #应用层(开发角度,五层协议)--》代码 传输层,tcp,udp 网络层,ipv4,ipv6 (路由器) 数据链路层,mac,arp(网卡,交换机) 物理层 ``` ### 4、抽象层 ```python socket 中文名:套接字 python socket模块 完成socket的功能 工作在应用层和传输层 之间的抽象层 帮助我们完成了所有信息的组织和拼接 socket对于程序员来说,已经是网络操作的底层了。 socket历史 同一台机器上的两个服务之间的通信 基于文件 基于网络的多态机器之间的多个服务通信 TCP协议: ########### server端: import socket sk=socket.socket() sk.bind(('127.0.0.1',9000)) sk.listen() print('*'*20) conn,addr=sk.accept() while True: msg=conn.recv(1024).decode('utf-8') if msg.upper()=='Q':break print(msg) ipn=input(">>>") conn.send(ipn.encode('utf-8')) if ipn.upper()=='Q':break conn.close() sk.close() ################ client端: import socket sk=socket.socket() sk.connect(('127.0.0.1',9000)) while True: ipn=input(">>>") sk.send(ipn.encode('utf-8')) if ipn.upper()=='Q':break msg=sk.recv(1024).decode('utf-8') if msg.upper() == 'Q': break print(msg) sk.close() ======================== UDP协议: server: import socket sk=socket.socket(type=socket.SOCK_DGRAM) sk.bind(('127.0.0.1',9000)) while True: msg,client_addr=sk.recvfrom(1024) print(msg.decode('utf-8')) msg=input(">>>").encode('utf-8') sk.sendto(msg,client_addr) sk.close() client: import socket sk=socket.socket(type=socket.SOCK_DGRAM) while True: inp=input('>>>').encode('utf-8') sk.sendto(inp,('127.0.0.1',9000)) ret=sk.recv(1024) print(ret) sk.close() ```

加载全部内容

相关教程
猜你喜欢
用户评论