1. 通过setsockopt设置发送缓冲为10*1024,但使用send发送数据时,发现数据长度大于10*1024也可以发送成功,请问如何解释?
2. 对于2M带宽的网络,理论上自己开发的应用程序(客户端)每秒可以发送多少Byte的数据(到服务器端),实际发送多少Byte数据比较合理?谢谢!!

解决方案 »

  1.   

    我是菜鸟,猜测一下:
    1)send返回的字节数并非是发送出的字节数。
    就是:
    send返回的字节数<= 发送出的字节数 + 留在缓冲区的字节数(未送出的) 阻塞模式更容易出这种情况吧。
      

  2.   

    感谢hityct1的答复。
    可能我没有把问题说清楚。
    1. 是阻塞式的。
    2. 问题1中是通过setsockopt设置socket的SO_SNDBUF(发送缓冲区)属性值为10*1024,但我在测试中发现调用send函数时,既是发送的数据长度大于10*1024,也可以发送成功。那设置socket的SO_SNDBUF(发送缓冲区)有什么用?
    3. 问题2是因为在2M带宽下,自己开发的应用程序(客户端)需要不停的向其他应用程序(服务器端)发数据,我是想知道理论上每秒可发多少Byte数据?实际经验来说每秒发多少Byte数据比较合理?有知道的大侠,麻烦帮忙解析一下。谢谢!!
      

  3.   

    同样的问题 啊,就是当我发送的数据量大于此时socket中发送缓冲的大小,这时也只send一次就把全部数据发送过去了,这种情况怎么理解,是不是发送的数据量与发送缓冲的大小无关呢??