如何可靠地使 send(2) 进行短发送?

Tho*_*son 5 c sockets networking posix

send(2)需要一个缓冲区和一个缓冲区长度。它可以返回一个错误,或者成功发送达到缓冲区长度大小的一些字节数。在某些情况下,send将发送少于请求的字节数(例如/sf/answers/183312881/)。

有没有办法在单元测试中持续触发短发送,而不是发送大消息并从另一个线程触发信号并希望幸运?

wil*_*ser 2

只需推出自己的:


#include <sys/types.h>
#include <sys/socket.h>

ssize_t mysend(int fd, void * buff, size_t len, int flags)
{

#if WANT_PARTIAL_SEND
len = 1 + urand(len -1);
#endif

return send(fd, buff, len, flags);
}
Run Code Online (Sandbox Code Playgroud)