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

 


本页地址:http://www.foxtable.com/webhelp/topics/2991.htm