如果接收端接收处理数据很慢,接收端缓存区就会数据堆积处理不过来,udp由于没有滑动窗口机制,发送过来的数据盛不下,就会丢包,发送过来直接不管。tcp由于有滑动窗口机制不会发生丢包现象,但是会让发送端发送的很慢,而产生数据有很快,同样会造成发送端发送缓存区数据堆积,直到发送缓存区爆满,再使用send往发送缓存区放数据就会报错。
1、tcp发送端发送缓存区爆满解决办法
再额外自己定义一个缓存区,产生的数据不要直接send,而是都放到自己的缓存,在适当的时候,再把自己缓存中的数据send放到发送缓存区。
2、udp接收缓存区爆满
udp recv接收到数据之后不要直接去处理,处理完再来recv。而是也应该自己定义一个缓存区,不停地把接收缓存区中的数据放到自己的缓存区,要保证接收缓存一直是空余状态。后台自己再慢慢的从缓存拿数据处理数据。