Python中tcp与udp的区别和udp的使用

tcp 和 udp的区别:
    1,tcp传输数据使用字节流的方式传输,udp是数据报
    2,tcp会产生粘包现象,udp不会
    3,tcp对网络条件要求高,udp更适合实时传输
    4,tcp编程可以保证传输的可靠性,udp则不保证
    5,tcp使用listen accpet, udp不需要
    6,tcp使用recv send 
     udp使用recvfrom sendto

udp通信的使用:
    
1,创建数据报套接字
        sockfd = socket(AF_INET,SOCK_DGRAM)
2,绑定服务端地址
        ADDR = ('192.168.1.2',8888)
        socked.bind(ADDR)
 3,收发消息
        data,addr = recvfrom(buffersize)
        功能:接收数据报套接字消息
        参数:每次最多接收消息的大小 (字节)
        返回值:data = 接收到的消息
               addr = 消息发送者的地址

     *revefrom 一次接收一个数据包,如果数据一次没有接收完则会丢失没接收的内容
      sendto(data,addr)
    功能:发送消息
    参数:data 要发送的消息
               addr 发送给某个主机的地址
    返回值:发送消息的字节数
    关闭套接字
        close()

TCP粘包处理:
    tcp中数据以数据流的方式发送接收,每次发送的数据间没有边界,在接收时
    可能造成数据的粘连即为粘包
     
    粘包如何处理:
        1,每次发送消息结束位置加标志
        2,发送的消息添加结构描述
        3,当连续发送时 每次发送有一个短暂的延迟  sleep(0.1)
关于recv 和 send:
      发送接收缓冲区
        发送和接收消息均先放到缓冲区,再进行处理
        recv接收消息当一次接收不完的时候下次会继续接收
        当recv阻塞时,如果客户端断开,则recv立即返回空字符串

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值