问题是这样的:我想用socket把某个字节数组的数据从客户端向服务器发送,这个数组的数据是不停的变化的,而且大小也在变,小的时候有几千,大的时候达到三万,因为套接字缓冲最大只有8192个字节(不知道是不是这样?)所以这里要建一个循环;这边要在发送的同时,这个字节数组的数据也会变化。
那怎么保证每一次发送都能完整的发送,继而进行下一次发送呢?接收端怎么处理?

解决方案 »

  1.   

    全都扔一个缓冲buff队列里  然后发送buff里的数据
      

  2.   

    关键这个数组数据是不停的变化的,只有一个数组,还有那个缓冲buff队列是个什么概念啊,直接用send函数不行吗?
      

  3.   

    建立线程,线程内先锁住,再copy,解锁,发送
      

  4.   

    发现你理解有误
    套接字的缓冲区的大小只会影响性能,不会丢失数据的。正确的做法是,每次调用send函数都要判断返回值,确认已发送数据的大小,通过循环发送剩余数据。还有调用send,系统IO完成前,不应该修改发送数据。想保证数据完整性必须加锁,或者复制到另外一块内存中再进行发送。