阅读背景:

完成端口服务端主动发送数据的问题!

来源:互联网 
当客户端成功与服务器建立接后,服务端投递了一个WSARecv,客户端发送登录请求后,WSARecv返回,服务器答应投递了一个WSASend,WSASend成功返回后表示客户端成功登录,这时服务器又投递了一个WSARecv,但是可能客户端一时没有数据传过来。所以服务端的GetQueuedCompletionStatus一直都不会返回,此时如果服务端有数据要发送,是不是可以直接投递WSASend呢,不过我试了WSASend后可以成功返回,服务端又投递一个WSARecv,我要求接收的长度为12(因为我知道客户端返回的包长度应该是21,12是包头长,9是包体,我接收的时候一般是先收包头,再投递WSARecv收包体。),但是GetQueuedCompletionStatus返回后(pNumberOfBytesTransferred)收到的长度即是包体的长度9,内容也是包体的内容,再次WSARecv时,包体是收不回来了,pNumberOfBytesTransferred的值是先前WSASend时的发送长度,这是为什么,请各位老大指救一二!!! 当客户端成功与服务器建立接后,服务端投递了一个WSARecv,客户端发送登录请求后,WSARe



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: