- tcp
- 1.1 tcp是传输控制协议,它是面向连接(三次握手)的,能保证数据的可靠性和准确性
- udp
- 2.1 udp是用户数据报协议,全拼(User Datagram Protocol), 它不面向连接,可以向指定ip发送数据,不能保证数据的准确性和稳定性,得到数据会有可能产生错了或者丢失,但是udp传输速度快。
提示:udp每次只能发送少量的数据,每个数据包最大是64k
- tcp和udp的不同点
- 3.1 tcp需要建立连接,udp不需要
- 3.2 tcp可以保证数据的准确性和有效性(数据包如果错乱会自动进行排序),udp保证不了
- 3.3 tcp超时重传,upd没有
- 3.4 tcp有应答机制,upd没有
- 3.5 tcp有流量控制,udp没有, udp没有流量控制如果使用死循环一直发送数据,会导致电脑卡死。
- tcp特点:
- 4.1. 多数数据应用需要保证数据的准确性都采用的是tcp,比如:文件上传和下载
- 4.2. udp多数用在视频传输,比如qq视频等
- 4.3. udp适合做广播, 传输速度快,tcp不适合做广播。
udp客户端流程 socket()->sendto()->recvfrom()->close
udp服务端流程 socket()->bind()->recvfrom()->sendto()
1、每次接受的最大字节数
recv_data,ip_port= udp_socket.recvfrom(1024)2、绑定端口,"":表示本机的任意一个ip都可以接受数据
3、对发送的数据进行gbk编码 error:表示错误处理方式,ignore:表示如果有特殊字符编码不了,则忽略 errors="strict":如果编码不成功则程序崩溃
str.encode(encoding="utf-8", errors="strict")udp发送广播
name_socket.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,True)tcp客户端流程 socket()->connect()->write()->read()->close()
tcp服务端流程 socket()->bind()->listen()->accept()->read()->write()->close
socket.listen(128)设置监听,把主动套接字改成被动套接字,服务端的socket只能接受客户端的连接请求,不能够收发数据 128:最大等待连接数据,在单线程的情况下最多有128人进行等待连接
service_client_socket, ip_port = tcp_server_socket.accept()接受客户端的连接请求 返回新套接字专门服务于客户端,进而客户端可以收发数据 accept会一直等待客户端的连接请求,如果没有连接请求会一直等待,有了连接请求才会解阻塞,代码继续往下执行
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)固定端口,程序退出后立即释放端口 SO_REUSEADDR:socket释放的选项 True:程序退出立即释放
tcp中的三次握手和四次挥手
第一次握手:client首先将数据包发送给server,client进入请求状态等待server确认
第二次握手:server收到数据包后,得知请求建立连接,并将数据包发送给client进行确认
第三次握手:client收到确认后,进行确认再次发送给server,server检查正确连接建立成功
第一次挥手:client发送关闭连接请求,用来关闭client到server的数据传送
第二次挥手:server收到请求,发送确认请求给client
第三次挥手:server发送关闭连接请求,用来关闭server到client的数据传送
第四次挥手:client收到关闭请求,进行确认
19万+

被折叠的 条评论
为什么被折叠?



