asyncio.Protocol 创建的 TCP 服务器,好像不存在粘包的问题,为什么呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checkr
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ns2250225
a href="/">V2EX    Python

asyncio.Protocol 创建的 TCP 服务器,好像不存在粘包的问题,为什么呢

  •  
  •   ns2250225
    ns2250225 Jul 31, 2018 3781 views
    This topic created in 2826 days ago, the information mentioned may be changed or developed.
    如题,测试了下,发现不会出现粘包的问题,可是没看懂是什么原因,求大神指导
    16 replies    2018-08-02 10:07:44 +08:00
    BBCCBB
        1
    BBCCBB  
       Jul 31, 2018   2
    不太可能,可能是你本地测的,没啥压力,没遇到而已, 网络不可能理解你的协议规则, 所以肯定是存在粘包的.
    ns2250225
        2
    ns2250225  
    OP
       Jul 31, 2018
    @BBCCBB 刚看了下源码,好像是它读写都有个缓冲区去处理信息
    BBCCBB
        3
    BBCCBB  
       Jul 31, 2018
    socket 本身会有一个读写缓存区, 像 java 的 netty 里, 代码里也会有读取和写入缓冲区,

    你可以试一下多写点数据再去读, 应该就有粘包了, 不过没必要,因为理论上他是一定会有粘包的 ==
    ETiV
        4
    ETiV  
       Jul 31, 2018
    tcpdump 抓一波试试就知道了~
    suikator
        5
    suikator  
       Jul 31, 2018   5
    MeteorCat
        6
    MeteorCat  
       Jul 31, 2018 via Android
    没到瓶颈,可能是单人测试环境,试下虚拟机跑脚本请求大量数据
    slowman
        7
    slowman  
       Jul 31, 2018   1
    每次看到有人提到粘包这个词,都挺烦的,5 楼帖子里民科说得好
    ysc3839
        8
    ysc3839  
       Aug 1, 2018 via Android
    也许开启了 NODELAY ?
    owenliang
        9
    owenliang  
       Aug 1, 2018 via Android
    因为你发的太慢了
    skinny
        10
    skinny  
       Aug 1, 2018
    在十几年前我搜索网络编程相关的文章,就被 CSDN 上的文章和帖子里的“粘包”这个民科概念误导过一阵子。

    那个时候刚刚接触电脑,又没有读过网络编程相关的书,编程时既想要 UDP 的效果,又想要 TCP 的可靠,还想“简单”,同时明明知道先发送个数据长度或数据类型,亦或是使用分隔符就可以解决的问题,却不知道为什么就是不愿意这么做,然后就搜索相关解决办法看看别人怎么做的,然后就不幸看到“粘包”这个愚蠢的说法,还被误导了一阵子。

    现在都 8102 年了,怎么现在还有人用这个民科概念,楼主该看看书更新更新脑子啦!
    skinny
        11
    skinny  
       Aug 1, 2018
    呃,楼里不少人该看看书更新更新脑子了。
    salamanderMH
        12
    salamanderMH  
       Aug 1, 2018
    tcp 没有所谓的“粘包”问题,本就是流式协议
    danc
        13
    danc  
       Aug 1, 2018
    哈啊哈
    ns2250225
        14
    ns2250225  
    OP
       Aug 1, 2018
    @all 谢谢大家,现在总算弄明白了,tcp 是流式协议,需要自定义发|收包的协议才能正确通讯~
    reus
        15
    reus  
       Aug 1, 2018
    以前的人水平不行,不知道 TCP 是流式协议,以为在发送端 Write 什么,接收端的 Read 也会得到同样的数据,结果在发生合并或者分割的时候,就称之为“粘包”。所以“粘包”根本不是“问题”,问题在于不懂得在应用层做切分。
    lolizeppelin
        16
    lolizeppelin  
       Aug 2, 2018 via Android
    粘包半包也就是个说法 拿个词来黑没什么意思吧
    About     Help     Advertise     Blog     API     FAQ     Solana     1173 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 62ms UTC 23:50 PVG 07:50 LAX 16:50 JFK 19:50
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86