从我读过的关于winsock的内容来看,recv倾向于不会在一次调用中接收到来自发件人的所有数据。当人们这么说时,他们的意思是,例如,我从客户端发送 300 个字节并在服务器上调用 recv,它可能在第一次调用时只能接收 200 个字节,缓冲区将被这 200 个字节填充? 最后 100 个字节会发生什么?
另外,假设缓冲区太小,例如 512 字节或其他内容,客户端发送 600。第一个 recv 调用是否会将缓冲区填充到容量,然后只删除最后的 88 个字节?如果我用不同的缓冲区再次调用 recv,该缓冲区的前 88 个字节会是其余的数据吗?
第三,如果 1 和 2 为真,并且我在单独的缓冲区中接收到一整包数据,我是否必须将它们拼接到一个缓冲区中才能开始解析我的数据?