tcp和udp

  • 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收到关闭请求,进行确认

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值