zoukankan      html  css  js  c++  java
  • Socket一次Recv接受的字节有限制么?

    答案是:有。大约 5-15KB ,默认 具体 和什么有关系我也不知道。反正我测试的是:16371字节。win7 x64。

    可以使用setSockOpt来设置 recvbuf or sndbuf 的大小,但是 我的建议还是控制 每次接受的字节数 控制在一定范围 比如 5KB。因为即使设置了,还是可能会接受到 较小的字节数。

    关于 Socket的用法 更重要的就是 如何对数据 进行处理了。涉及到 处理的算法。

    比如 你要接受很大的buffer,可以设置足够的buffer,然后接受,接受少了,继续 接受,但是在buffer+bufferOffset的位置接受,bufferOffset自己根据已接受的字节数增加。直到其总共接受的足够 再处理。

    另外 还存在 一个 socket Send的包 可能 会追加到前面的 Socket Send的包 。这样 你的Send的数据 里面有自定义头信息,就会不是在第一个字节,要进行处理。

    更安全的方法就是 接受的buffer 一个字接一个字节的处理。。。感觉效率可能会低吧。。

    参考:

    setsockopt设置socket状态

    http://baike.baidu.com/view/569217.htm

  • 相关阅读:
    异步底层代码实现邮件发送
    MongoDB+Echarts+DWebSocket
    celery定时任务+redis有序集合实现实时访问人数
    位运算+数据库两种方式实现中间件权限操作
    cocoapod 引入url
    pdf转xml
    Flutter项目安卓下载地址
    ios Mac 利用SVN进行cocoapod私有库的使用
    KVO
    类别和类扩展的区别
  • 原文地址:https://www.cnblogs.com/ayanmw/p/2671582.html
Copyright © 2011-2022 走看看