我需要将数据发送到套接字,基本上是传输文件,
根据send()函数docs,它说,
If no error occurs, send returns the total number of bytes sent, which can be less than the number requested to be sent in the len parameter. Otherwise, a value of SOCKET_ERROR is returned,我担心的是,返回值可能小于请求值。因为我正在从一个文件读取和写入一个套接字,因为它可能不会发送所有的字节,我猜如果没有发送满的缓冲区,我将不得不重试?在这种情况下,我想我必须以某种方式将同一缓冲区上的指针按读取的字节数前进,然后再次发送它??
我只想知道这是不是真的?或者有没有更聪明的方法,这样所有请求的数据都会被发送,而我不必担心什么时候不是所有数据都被发送了?
谢谢,
发布于 2013-01-07 00:34:17
是的,您确实需要担心send (或write等)返回的值。没有非常聪明的方法可以绕过它,但有一些由优秀的Richard Stevens编写的函数,即readn和writen。
This article on informit似乎有这些函数的一个版本。
https://stackoverflow.com/questions/14184181
复制相似问题