雷蛇云驱动最新版本:Qt客户端程序建立和服务器通信

来源:百度文库 编辑:九乡新闻网 时间:2024/05/05 14:08:13

在    void QWSDisplay::Data::init()中,如果为客户端程序,调用    connectToPipe()跟服务器建立连接。然后向服务器发送QWSIdentifyCommand命令,然后使用    waitForConnection()等待命令返回。在waitForConnection()中,首先,调用    fillQueue(),在fillQueue()中,首先调用    QWSServer::processEventQueue(),如果为服务器所在的程序,服务器会处理该程序的客户事件,填充相应队列。如果为客户端程序,该函数什么都不做。然后调用    QWSEvent *e = readMore()读取一个事件,并对该事件根据不同类型分类,放入不同的队列或处理,相对QWSIdentifyCommand的返回为QWSEvent::Connected。然后会循环调用readMore(),直到读出所有事件。如果读到这个事件,fillQueue()直接返回,waitForConnection()也直接返回,否则,waitForConnection()还会重复刷新输出缓冲区,继续等待两个动作,直到超时。在waitForConnection()正确返回的时候,它会带回一些信息,主要包括qws_client_id,qws_display_spec等,然后QWSDisplay::Data::init()调用    waitForCreation()等待返回QWSEvent::Creation事件,从而做一些其他主要的初始化。之后,客户端程序的运行环境就建立好了