发明内容
本发明的目的是提出一种对三维层位数据进行构造解释的方法,以解决现有的在客户端与服务器之间传输三维层位数据会增加网络传输的压力、无法实现多用户对同一个工区中的三维层位数据进行构造解释操作中的至少一个技术问题。
本发明的一方面提供一种对三维层位数据进行构造解释的方法,包括多个客户端和与所述多个客户端处于同一局域网内的服务器,预先将各工区号对应的三维层位数据存储在共享硬盘中,所述方法包括:(A)所述多个客户端中的每个客户端根据用户的输入选择工区号,并从共享硬盘中读取与选择的工区号对应的三维层位数据;(B)每个客户端对读取的三维层位数据分别进行构造解释操作,并将构造解释操作后的三维层位数据保存在每个客户端各自的临时文件夹中;(C)每个客户端分别生成通信信息,并将生成的通信信息发送到所述服务器,其中,所述通信消息指示进行构造解释操作的三维层位数据所对应的工区号和临时文件夹的存放路径;(D)所述服务器分别从每个客户端接收通信信息,并将接收的通信信息存入消息队列;(E)所述服务器按照先进先出原则从所述消息队列中提取通信信息,并对提取的通信信息进行解析,以确定所述通信信息所指示的三维层位数据所对应的工区号和临时文件夹的存放路径;(F)所述服务器根据所述通信信息所指示的临时文件夹的存放路径从临时文件夹中读取构造解释操作后的三维层位数据,并将读取的构造解释操作后的三维层位数据存放到共享硬盘中以更新所述通信信息所指示的工区号对应的三维层位数据。
可选地,所述通信信息可还指示构造解释操作的类型,构造解释操作的类型可包括层位解释操作和非层位解释操作,所述非层位解释操作可包括获取客户端状态列表和获取客户端权限列表。
可选地,在步骤(C)中,所述多个客户端中的任一客户端生成通信信息,并将生成的通信信息发送到服务器的步骤可包括:(C1)所述客户端生成通信信息;(C2)所述客户端确定所述通信信息所指示的构造解释操作的类型;(C3)如果确定的构造解释操作的类型为层位解释操作,则所述客户端采用TCP协议将所述通信信息发送到所述服务器;(C4)如果确定的构造解释操作的类型为非层位解释操作,则所述客户端采用UDP协议将所述通信信息发送到所述服务器。
可选地,步骤(C4)可包括:(C41)如果确定的构造解释操作的类型为非层位解释操作,则确定非层位解释操作的类型;(C42)如果确定的非层位解释操作的类型为获取客户端状态列表,则采用UDP协议以预定时间间隔将所述通信信息发送到所述服务器;(C43)如果确定的非层位解释操作的类型为获取客户端权限列表,则采用UDP协议将所述通信信息发送到所述服务器。
可选地,所述方法可还包括:(G)所述服务器利用心跳包检测与所述服务器处于同一局域网内的所述多个客户端是否在线,并基于所述多个客户端的在线状态来生成用于显示在线客户端的客户端状态列表。
可选地,所述方法可还包括:(H)预先设置与所述服务器处于同一局域网内的所述多个客户端分别针对各工区号对应的三维层位数据的操作权限,并将所述多个客户端的操作权限形成客户端权限列表存放在服务器中。
可选地,步骤(E)可包括:(E1)所述服务器按照先进先出原则从所述消息队列中提取通信信息,并对提取的通信信息进行解析,以确定所述通信信息所指示的构造解释操作的类型;(E2)判断确定的构造解释操作的类型是否为层位解释操作;(E3)如果确定的构造解释操作的类型为层位解释操作,则确定所述通信信息所指示的三维层位数据所对应的工区号和临时文件夹的存放路径。
可选地,步骤(E)可还包括:(E4)如果确定的构造解释操作的类型为非层位解释操作,则确定非层位解释操作的类型;(E5)如果确定的非层位解释操作的类型为获取客户端状态列表,则所述服务器向发送所述通信信息的客户端发送状态信息,所述状态信息指示客户端状态列表是否有变化;(E6)所述客户端根据接收的状态信息确定客户端状态列表是否有变化;(E7)如果客户端状态列表有变化,则所述客户端从服务器读取客户端状态列表,并将读取的客户端状态列表存入所述客户端的本地缓存中;(E8)如果客户端状态列表没有变化,则所述客户端从所述客户端的本地缓存中读取客户端状态列表;(E9)如果确定的非层位解释操作的类型为获取客户端权限列表,则所述客户端从服务器读取客户端权限列表。
可选地,所述方法在步骤(F)之后可还包括:(I)所述服务器在更新所述通信信息所指示的工区号对应的三维层位数据之后,建立对应的操作日志,其中,所述操作日志记录有指示对所述工区号对应的三维层位数据执行的构造解释操作的相关信息的日志条目,所述相关信息包括工区号、执行构造解释操作的客户端对应的用户名、更新所述工区的三维层位数据的时间;(J)所述服务器对建立的操作日志进行存储。
采用本发明所述的对三维层位数据进行构造解释的方法,在客户端与服务器之间仅传输通信信息,由服务器基于该通信信息来更新共享硬盘中的三维层位数据,从而有效减轻了网络传输的压力,并实现了多用户同时对同一工区中的三维层位数据进行构造解释操作。
具体实施方式
下面,将参照附图详细描述本发明的示例性实施例。
提供参照附图的以下描述以帮助对由权利要求及其等同物限定的本发明的示例性实施例的全面理解。包括各种特定细节以帮助理解,但这些细节仅被视为是示例性的。因此,本领域的普通技术人员将认识到在不脱离本发明的范围和精神的情况下,可对描述于此的示例性实施例进行各种改变和修改。此外,为了清楚和简洁,省略对公知的功能和结构的描述。
总体说来,根据本发明的示例性实施例的对三维层位数据进行构造解释的方法可包括处于同一局域网的多个客户端和一个服务器,在所述多个客户端和服务器之间仅传输通信信息,服务器基于通信信息对各客户端构造解释后的三维层位数据进行移动,从而避免了在客户端与服务器之间传输大量级的三维层位数据,有效减少了网络传输的压力。此外,由于服务器将从所述多个客户端接收的通信信息保存到消息队列中,并且服务器按照先进先出原则对所述消息队列中的通信信息进行处理,从而实现了所述多个客户端同时对同一工区号对应的三维层位数据进行构造解释操作。
图1示出多个客户端中的任一客户端与服务器之间数据交互流程的示例。这里,除了图示的一个客户端之外,还可存在其他的客户端也与所述服务器进行上述数据交互流程,而图1仅示出其间实现数据传输的一个客户端。
图1是示出根据本发明示例性实施例的多个客户端中的任一客户端与服务器之间的数据交互流程的示意图。
参照图1,在步骤S10中,所述客户端生成通信信息。
下面,将参照图2详细描述根据本发明示例性实施例的多个客户端中的任一客户端生成通信信息的方法。
图2是示出根据本发明示例性实施例的在所述多个客户端中的任一客户端中生成通信信息的步骤的流程图。
在步骤S101中,客户端根据用户的输入选择工区号,并从共享硬盘中读取与选择的工区号对应的三维层位数据。
可选地,在执行步骤S101之前,根据本发明的示例性实施例的对三维层位数据进行构造解释的方法可还包括步骤:预先将各工区号对应的三维层位数据存储在共享硬盘中。
在步骤S102中,客户端对读取的三维层位数据进行构造解释操作,并将构造解释操作后的三维层位数据保存在临时文件夹中。
在步骤S103中,客户端生成通信信息。这里,所述通信消息可指示进行构造解释操作的三维层位数据所对应的工区号和临时文件夹的存放路径。
返回图1,在步骤S20中,客户端将生成的通信信息发送到服务器。
下面参照图3来详细描述将任一客户端生成的通信信息发送到服务器的步骤。
图3是示出根据本发明示例性实施例的图1中的将客户端生成的通信信息发送到服务器的步骤的流程图。
参照图3,在步骤S201中,客户端确定所述通信信息所指示的构造解释操作的类型。此时,所述通信消息除指示进行构造解释操作的三维层位数据所对应的工区号和临时文件夹的存放路径之外,可还指示构造解释操作的类型。
可选地,解释操作的类型可包括层位解释操作和非层位解释操作。作为示例,所述层位解释操作可为以下项中的任意一个:删除三维层位数据的层位线、添加三维层位数据的层位线、修改三维层位数据的层位线、删除三维层位数据的断层线、添加三维层位数据的断层线、修改三维层位数据的断层线。
可选地,客户端在与服务器进行通信之前,可先以预定消息格式对生成的通信信息进行封装,然后再将封装后的通信信息发送到服务器。
作为示例,所述预定消息格式可包括消息头和消息主体。例如,消息头可包括服务器的IP地址、端口号以及构造解释操作的类型,消息主体可指示进行构造解释操作的三维层位数据所对应的工区号和临时文件夹的存放路径。以所述预定消息格式在客户端与服务器之间传送通信信息,能够准确的将通信信息传送到服务器中,并能够准确简洁的反映构造解释操作的类型。
如果确定的构造解释操作的类型为层位解释操作,则执行步骤S202:客户端采用TCP协议将所述通信信息发送到服务器。这里,客户端采用TCP协议向服务器发送指示客户端对选取的工区号对应的三维层位数据进行了层位解释操作的通信信息,可确保消息准确、安全、可靠地传输到服务器。
如果确定的构造解释操作的类型为非层位解释操作,则执行步骤S203:确定非层位解释操作的类型。这里,非层位解释操作的类型可包括:获取客户端状态列表和获取客户端权限列表。
如果确定的非层位解释操作的类型为获取客户端状态列表,则执行步骤S204:客户端采用UDP协议以预定时间间隔将所述通信信息发送到服务器20。
如果确定的非层位解释操作的类型为获取客户端权限列表,则执行步骤S205:客户端采用UDP协议将所述通信信息发送到所述服务器。
这里,利用UDP协议传递通信信息与利用TCP协议传递通信信息相比可靠性和安全性差一些,但利用UDP协议传递通信信息的效率更好,因此,针对需频繁向服务器发送的指示用于获取客户端权限列表或获取客户端状态列表的通信信息,可采用UDP协议进行发送,以确保更好的信息传递效率。
这里,根据本发明示例性实施例的对三维层位数据进行构造解释的方法在客户端中采用了多线程处理技术,即,一个线程用于负责处理构造解释操作,以将构造解释操作后的三维层位数据保存在临时文件夹中,从而方便服务器对三维层位数据的统一管理;另一个线程用于负责处理与服务器的通信,以根据从服务器返回的消息执行相应地操作。上述两个线程之间需要相互协作,需以预定形式告知对方,例如,可利用信号槽机制或线程间的信号量来实现上述两个线程之间的协作。
返回图1,在步骤S30中,服务器从客户端接收通信信息,并将接收的通信信息存入消息队列。
在步骤S40中,服务器按照先进先出原则从所述消息队列中提取通信信息,并对接收到的通信信息进行解析,以确定所述通信信息所指示的三维层位数据所对应的工区号和临时文件夹的存放路径。可选地,服务器从客户端接收到通信信息之后,需先对提取的通信信息进行解封,然后再对解封后的通信信息进行解析。在所述通信信息指示构造解释操作的类型、三维层位数据所对应的工区号和临时文件夹的存放路径的情况下,在步骤S40中服务器可对提取的通信信息进行解析,以确定出所述通信信息所指示的构造解释操作的类型、三维层位数据所对应的工区号和临时文件夹的存放路径。
可选地,在所述多个客户端与服务器之间进行数据交互的情况下,所述多个客户端可以异步传输的方式将各自产生的通信信息发送给服务器,服务器可从所述多个客户端分别接收通信信息,并将接收的通信信息存入消息队列,然后服务器按照先进先出(FIFO)原则从所述消息队列中提取通信信息,并对提取的通信信息进行解析。这里,虽然服务器同时从所述多个客户端接收通信信息,但由于在对接收的通信信息进行处理时,是按照先进先出原则一个一个进行顺序处理,因此,可有效避免多客户端对同一工区号对应的三维层位数据进行构造解释操作的不同步问题。
下面参照图4来详细描述在步骤S40之后服务器基于从客户端接收的通信信息来与客户端进行数据交互的步骤。
图4是示出根据本发明示例性实施例的所述多个客户端中的任一客户端与服务器之间的数据交互的步骤的流程图。
在步骤S100中,服务器判断所述通信信息所指示的构造解释操作的类型是否为层位解释操作。
如果确定的构造解释操作的类型为层位解释操作,则执行步骤S200:根据所述通信信息所指示的临时文件夹的存放路径从临时文件夹中读取构造解释操作后的三维层位数据,并将读取的构造解释操作后的三维层位数据存放到共享硬盘中以更新所述通信信息所指示的工区号对应的三维层位数据。这里,图4中的步骤S200对应图1中的步骤S50。
采用本发明示例性实施例的上述方法,客户端仅需将构造解释操作后的三维层位数据存储到临时文件夹中,而不必再将构造解释操作后的三维层位数据上传到服务器,且客户端仅需向服务器发送通信信息,然后由服务器根据通信信息来从临时文件夹中移动构造解释操作后的三维层位数据到共享硬盘中,这样大大减轻了网络传输的压力,而且有更强的鲁棒性,灾难恢复能力好。
可选地,根据本发明示例性实施例的对三维层位数据进行构造解释的方法在步骤S200之后可还包括:在更新所述通信信息所指示的工区号对应的三维层位数据之后,服务器建立对应的操作日志;然后对建立的操作日志进行存储。这里,所述操作日志记录可有指示对所述工区号对应的三维层位数据执行的构造解释操作的相关信息的日志条目,所述相关信息可包括工区号、执行构造解释操作的客户端对应的用户名、更新所述工区的三维层位数据的时间。
这里,根据本发明示例性实施例的对三维层位数据进行构造解释的方法在服务器中也采用了多线程处理技术,即,在服务器中包括数据记录线程和任务调度线程。
具体说来,数据记录线程用于负责对各类数据进行记录和存储,并将处理结果通知任务调度线程。任务调度线程用于负责从消息队列中读取通信信息,并对读取的通信信息进行处理(即,任务调度线程执行图1中的步骤S30~步骤S50),任务调度线程每处理完成一条通信信息,则将处理结果通知数据记录线程,然后数据记录线程对任务调度线程的处理结果进行记录(即,由数据记录线程来建立操作日志,并对建立的操作日志进行存储)。上述服务器中的两个线程之间既独立完成各自的任务,又相互协调工作,有利于服务器功能的扩展和维护。
可选地,根据本发明示例性实施例的对三维层位数据进行构造解释的方法可还包括步骤:客户端从服务器读取操作日志,以对读取的操作日志进行查看。
如果确定的构造解释操作的类型为非层位解释操作,则执行步骤S300:服务器确定非层位解释操作的类型,即,服务器判断从消息队列中提取的通信信息所指示的非层位解释操作的类型是否为获取客户端状态列表。
如果确定的非层位解释操作的类型为获取客户端权限列表,则执行步骤S400:客户端从服务器中读取客户端权限列表。这里,图4中的步骤S400对应图1中的步骤S60。
可选地,客户端权限列表可按照以下方式来创建:预先设置与所述服务器处于同一局域网内的所述多个客户端分别针对各工区号对应的三维层位数据的操作权限,并将所述多个客户端的操作权限形成客户端权限列表存放在服务器中。
作为示例,根据本发明示例性实施例的对三维层位数据进行构造解释的方法,可由权限管理模块针对与所述服务器处于同一局域网内的各客户端设置在所选择的工区下对三维层位数据进行构造解释的操作权限。
具体说来,权限管理模块具有为所有客户端设置在所选择的工区下对三维层位数据进行构造解释的操作权限的能力。
例如,权限管理模块可为所有客户端设置对三维层位数据进行构造解释的操作权限,并将所有客户端在所选择的工区下对三维层位数据进行构造解释的操作权限形成客户端权限列表,再该客户端权限列表上传给服务器进行存储。
此外,权限管理模块可还具有为所有客户端分别设置账户及密码的能力。
例如,在图2所示的步骤S101中客户端首先接收用户输入的账户和密码,在用户输入的账户和密码与权限管理模块设置的账户和密码一致的情况下,客户端再接收用户的输入,并根据用户的输入选择工区号。如果用户输入的账户和密码与权限管理模块设置的账户和密码不一致,则该客户端无法执行步骤S101后续的步骤。
这里,应理解,权限管理模块可运行在与所述服务器处于同一局域网内的各客户端中的任一客户端上,此时,权限管理模块以一个独立的线程运行。权限管理模块还可运行在与所述服务器处于同一局域网内的各客户端之外的其他客户端上。
如果确定的非层位解释操作的类型为获取客户端状态列表,则执行步骤S500:服务器向发送该通信信息的客户端发送状态信息。这里,所述状态信息可指示客户端状态列表是否有变化。这里,图4中的步骤S500对应图1中的步骤S70。
可选地,为了客户端可更快速地获取处于同一局域网内的所有客户端的客户端状态列表,可利用本地缓存技术来提高效率,即,在初次执行步骤S500时可直接从服务器读取客户端状态列表,并将读取的客户端状态列表存入客户端的本地缓存中,然后在非初次执行步骤S500时,仅需从服务器接收状态信息,并仅在接收的状态信息指示客户端状态列表有变化时,才从服务器读取客户端状态列表,如果接收的状态信息指示客户端状态列表没有变化时,客户端只需从客户端的本地缓存中读取客户端状态列表即可。具体过程请参见下面的步骤S600~步骤S800。
在步骤S600中,客户端根据接收的状态信息确定客户端状态列表是否有变化。
可选地,客户端状态列表可由服务器按照以下方式来生成:利用心跳包检测与所述服务器处于同一局域网内的各客户端是否在线,并基于各客户端的在线状态来生成用于显示在线客户端的客户端状态列表,然后所述服务器对生成的客户端状态列表进行存储。
如果所述状态信息指示客户端状态列表没有变化,则执行步骤S700:从客户端的本地缓存中读取客户端状态列表。
如果所述状态信息指示客户端状态列表有变化,则执行步骤S800:从服务器读取客户端状态列表,并将读取的客户端状态列表存入客户端的本地缓存中。这里,图4中的步骤S800对应图1中的步骤S80。
可选地,根据本发明示例性实施例的对三维层位数据进行构造解释的方法可还包括步骤:如果所述状态信息指示客户端状态列表有变化,则进一步确定是否是有客户端掉线,如果有客户端处于掉线状态,则服务器对从处于掉线状态的客户端接收的通信信息不进行处理,从而可保证服务器对从客户端接收的通信信息处理的时效性和正确性。
具体说来,如果有客户端处于掉线状态,则数据记录线程会记录客户端状态的变化,并将关于有客户端处于掉线状态的通知发送给任务调度线程,则任务调度线程对从处于掉线状态的客户端接收的通信信息不进行相应地处理。
可选地,服务器可包括主接口和备用接口,以便于对服务器的维修。具体说来,服务器利用上述两个接口同时从客户端接收通信信息,服务器对通过主接口从客户端接收的通信信息进行处理,仅当服务器在预定时间内对通过主接口从客户端接收的通信信息未进行响应时,服务器才对通过备用接口从客户端接收的通信信息进行处理。
根据本发明示例性实施例的对三维层位数据进行构造解释的方法,由于各客户端和服务器处于同一局域网中,使得网络传输速度很快,可应对数量级以GB甚至TB为单位的三维层位数据。而且,利用该局域网来在各客户端与服务器之间传输通信信息较为可靠,不易受到外部攻击,能够保证各客户端与服务器的通信质量。
根据本发明示例性实施例的对三维层位数据进行构造解释的方法搭建的多个客户端与服务器之间的通信架构,由于在各客户端与服务器之间仅传递通信信息,因此,即使服务器或客户端中的结构发生了细微的改动,该通信架构仍可适应,而不需要对该通信架构进行频繁的改动和设计。
尽管已经参照其示例性实施例具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本发明的精神和范围的情况下,可以对其进行形式和细节上的各种改变。