完成端口 WSARecv 怎么控制接受字节数

来源:百度知道 编辑:UC知道 时间:2024/06/27 23:47:42
WSARecv
WSABUF的len 是用来控制接收多少字节吗?
那假设这里 len 是50 ,但实际套接字上只有20字节数据,那么完成端口接收20个字节完成时完成端口就会返回的,GetQueuedCompletionStatus 的参数 lpNumberOfBytes 会告诉你一次接收动作实际接收了多少字节数.
如果len设置成20,但实际套接字上有50个字节的数据,将会是个什么情况呢?
如果接受不完整 WSARecv的返回值是0还是SOCKET_ERROR还是其他的?lpNumberOfBytesRecvd的值是多少呢?下次接受是从0开始还是从20开始呢?

还能怎么样 只能是接收不完整,下次接收时才能接收到剩下的部分,
所以搞通讯的一般情况下都要先定协议,来保证数据的完整性和正确性

返回的是实际接收的字符个数,下次接收从字符串的下一个字符开始
比方说 对方传过来 “12345”第一次你接收到“123”,第二次就接收“45”了