recv 不保证能收到参数里缓冲区大小的数据,譬如说
int n = recv(client_socket, buffer, sizeof(buffer), 0);
假设 buffer 的大小是 16 个字节,如果客户端发送 8 个字节,recv 就返回 8
现在我的包结构是 包长度( 2 个字节) + 包体(可变长度) 程序先接读 2 字节包长度 ushort package_size; int n = recv(client_socket, ( byte *) package_size, sizeof(package_size), 0);
这个 n 会不会少于 2 如果有这个可能,那么岂不是要重复 recv ?好像很麻烦
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.