我如何在Windows 10的C中从套接字流中准确读取N个字节,所以我唯一能找到的功能就是recv(),它可以读取所有内容。
答案 0 :(得分:1)
与the official documentation says一样,您必须传递给recv()
函数4个参数:
s
-套接字描述符buf
-将保存读取数据的内存缓冲区len
-内存缓冲区的长度flags
-“影响该功能行为的一个标志或一组标志” 特别是,当最后一个参数设置为定义的值MSG_WAITALL
时,recv()
函数将仅在以下事件之一发生时完成:
换句话说,如果您想精确地读取10个字节,则应创建一个10个字节的缓冲区,并要求recv()
函数仅在缓冲区已满时才返回!
char data[10];
recv(streamSocket, data, 10, MSG_WAITALL);
希望有帮助