SendWait
SendWait用于向服务器发送信息,并在收到服务器回复之前,停止执行后续代码。
语法:
SendWait(Message,TimeOut)
Message: 字符型,指定要发送的内容。
TimeOut:
整数型,可选参数,用于设置等待时间,默认值为5,单位为秒,如果在此时间内没有收到服务器回复,则继续执行后续代码。
示例
假定客户端需要获取服务器时间。
1、首先在服务器端的ReceivedMessage事件设置代码:
If
e.Message =
"GetDate" Then
e.ReturnValue
= Date.Now
End
If
2、客户端可以通过下面的代码获取服务器时间:
If
QQClient.Ready
Then
Dim msg
As String =
QQClient.SendWait("GetDate",5)
If msg =
"" Then
Popmessage("未获服务器响应!","提示",PopIconEnum.Error)
Else
Popmessage("当前时间为:"
& msg,"提示",PopIconEnum.Infomation)
End
If
End
If
提示:GetDate不是固定的,只是客户端可服务器约定的字符,你可以约定各种字符,用于客户端和 服务器之间的交互。
Send和SendWait的差别
和SendWait一样,上一节介绍的Send也可以向服务器发送消息,但二者是有差别的。
Send收发过程:
1、Send不返回值,发送消息后直接执行后续代码,并不等待服务器返回消息。
2、服务器收到Send发送的消息后,触发QQServer的ReceivedMessage事件,服务器可以通过e参数ReturnValue返回消息。
3、客户端收到服务器返回的消息后,触发QQClient的ReceivedMessage事件,通过这个事件获取服务器返回的消息。
SendWait收发过程:
1、SendWait会返回值,发送消息后会暂停执行,直到收到服务器返回的消息,才会执行后续代码。
2、服务器收到SendWait发送的消息后,同样触发QQServer的ReceivedMessage事件,服务器可以通过e参数ReturnValue返回消息。
3、客户端收到服务器返回的消息后,并不触发QQClient的ReceivedMessage事件,而是作为SendWait的返回值。
4、如果在规定时间内,SendWait没有收到服务器的返回值,那么SendWait返回空值,并继续执行后续代码。
显然,当需要和服务器即时交互的时候,使用SendWait,否则使用Send。