如果send出的实际数据小于开始设置的值?是怎么回事,是不是应该作为错误处理?
若不是错误,那么该怎么处理?

解决方案 »

  1.   

    如果你的socket是以overlapped结构创建的,那么你将使用异步通讯模式,这样当你WSASend数据的时候只是尽可能的发送数据,其更主要的工作就是将该socket的overlapped与完成端口重新绑定,这时WSASend将会返回ERROR_IO_PENDING的错误,这没有关系,只是说明WSASend一次没有发全,该函数便立刻返回了,当该socket将数据发送完毕之后,将会通知与该socket绑定的完成端口,这样你便可以实现异步发送了。
      

  2.   

    一次send小于1k的数据能保证100%的发送成功。
    如果一次发送大于1k的数据就难说了
      

  3.   

    我们不能总是寄希望于,如果这次的数据发送少,socket就会一次发送,而是应该在整体的机制上解决,再有就是如果该socket的资源非常紧张,那么他每次发送或接收的数据也会随之减少。
      

  4.   

    我是说用send()函数发送数据时,是不是数据缓冲区中的数据不发送完成,这个函数就不会返回?
    而且保证完全发送出去之后才返回正确值?否则就返回错误?
      

  5.   

    我的意思就是说,我们在程序中调用完send()函数后用不用判断,它到底发送了多少字节,是不是我们在定义缓冲区时所写上的字节数?