CN102546733A - 数据通信方法和装置 - Google Patents
数据通信方法和装置 Download PDFInfo
- Publication number
- CN102546733A CN102546733A CN2010106248182A CN201010624818A CN102546733A CN 102546733 A CN102546733 A CN 102546733A CN 2010106248182 A CN2010106248182 A CN 2010106248182A CN 201010624818 A CN201010624818 A CN 201010624818A CN 102546733 A CN102546733 A CN 102546733A
- Authority
- CN
- China
- Prior art keywords
- thread
- data
- applications client
- sub
- transfer server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开一种数据通信方法和装置,涉及通信领域。为解决现有技术占用的网络带宽较多的问题而发明。本发明实施例提供的技术方案包括:中转服务器通过有线网络接收一个以上远端客户端发送的数据;所述中转服务器将所述远端客户端发送的数据转化为统一格式的数据;所述中转服务器使用网络通信套接字分别通过无线网络向应用客户端发送所述统一格式的数据;如果所述应用客户端创建的线程监听到所述网络通信套接字变为可用,所述线程运行所述统一格式的数据的相应处理例程。本发明实施例可以应用在通信网络中,尤其适用于3G网络。
Description
技术领域
本发明涉及通信领域,尤其涉及一种数据通信方法和装置。
背景技术
随着现代通信技术的发展,第三代移动通信技术(3rd-generation,3G)日益成熟,3G支持高速数据传输,能够同时传送声音及数据信息。基于3G的一个非常重要的应用是智能交通领域,以及其他需要使用无线网络进行数据通信的领域。在智能交通领域中,数字监控产品如数字音频录像机(Digital Video Recorder,DVR)等的应用客户端不仅可以进行本地视频监听,也可以利用3G的高带宽优势将数据发送到远端客户端,还可以使用远端客户端进行远程调度。
现有技术中,应用客户端和远端客户端进行数据通信的过程包括:应用客户端使用多个网络通信套接字分别通过无线网络向应用客户端发送数据;如果应用客户端创建的线程监听到多个网络通信套接字中某个或某些网络通信套接字变为可用,该线程运行所述数据的相应处理例程。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:应用客户端需要使用多个网络通信套接字分别通过无线网络向应用客户端发送数据,即需要使用多条无线通信链路进行数据通信,占用的无线网络带宽较大,进而导致无线网络带宽的利用率较低。
发明/实用新型内容
本发明的实施例提供一种数据通信方法和装置,能够占用较少的无线网络带宽实现应用客户端和远端客户端之间的数据通信。
一方面,提供了一种数据通信方法,包括:中转服务器通过有线网络接收一个以上远端客户端发送的数据;所述中转服务器将所述远端客户端发送的数据转化为统一格式的数据;所述中转服务器使用网络通信套接字分别通过无线网络向应用客户端发送所述统一格式的数据;如果所述应用客户端创建的线程监听到所述网络通信套接字变为可用,所述线程运行所述统一格式的数据的相应处理例程。
又一方面,提供了一种数据通信方法,包括:中转服务器接收一个以上远端客户端通过有线网络主动发送的数据,将所述远端客户端发送的数据转化为统一格式的数据后使用网络通信套接字通过无线网络向应用客户端发送;或者所述中转服务器接收所述应用客户端通过无线网络主动发送的数据,将所述应用客户端发送的数据转化为不同格式的数据后通过有线网络向所述远端客户端发送。
另一方面,提供了一种中转服务器,包括:
第一接收模块,用于通过有线网络接收一个以上远端客户端发送的数据;
第一转化模块,用于将所述第一接收模块接收的数据转化为统一格式的数据;
第一发送模块,用于通过无线网络使用网络通信套接字向应用客户端发送所述第一转化模块得到的统一格式的数据。
再一方面,提供了一种应用客户端,包括:
第三接收模块,用于使用网络通信套接字接收中转服务器通过无线网络发送的数据;
第一处理模块,用于当创建的线程监听到所述网络通信套接字变为可用时,所述线程运行所述第三接收模块接收的数据的相应处理例程。
本发明实施例提供的数据通信方法和装置,中转服务器通过有线网络接收一个以上远端客户端发送的数据,并将该数据转化为统一格式后使用一个网络通信套接字通过无线网络向应用客户端发送,从而通过一条无线通信链路实现远端客户端和应用客户端之间的数据通信,占用的无线网络带宽较少。本发明实施例解决了现有技术中需要使用多条无线通信链路进行数据通信,占用的无线网络带宽较大的问题。
附图说明
图1为本发明实施例一提供的数据通信方法的流程图;
图2为本发明实施例二提供的数据通信方法的流程图一;
图3为本发明实施例二提供的数据通信方法的流程图二;
图4为本发明实施例四提供的中转服务器的结构示意图一;
图5为本发明实施例四提供的中转服务器的结构示意图二;
图6为本发明实施例五提供的应用客户端的结构示意图一;
图7为本发明实施例五提供的应用客户端的结构示意图二;
图8为本发明实施例五提供的应用客户端的结构示意图三;
图9为图8所示的应用客户端中监听模块的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术占用的网络带宽较多的问题,本发明实施例提供一种数据通信方法和装置。
如图1所示,本发明实施例一提供的数据通信方法,包括:
步骤101,中转服务器通过有线网络接收一个以上远端客户端发送的数据。
步骤102,中转服务器将远端客户端发送的数据转化为统一格式的数据。
在本实施例中,一个以上远端客户端可以发送多条数据,步骤102中中转服务器可以将多条数据转化为多条统一格式的数据,该统一格式的数据可以为任意中转服务器和应用客户端约定的格式,在此不再一一赘述。
步骤103,中转服务器使用网络通信套接字分别通过无线网络向应用客户端发送统一格式的数据。
步骤104,如果应用客户端创建的线程监听到网络通信套接字变为可用,线程运行统一格式的数据的相应处理例程。
在本实施例中,使用应用客户端创建的线程监听网络通信套接字,可以用来判断应用客户端是否接收中转服务器发送的数据。当该应用客户端接收到中转服务器发送的数据时,该应用客户端创建的线程监听到网络通信套接字变为可用,所述线程运行统一格式的数据的相应处理例程,可以实现应用客户端对一个以上远端客户端发送数据的响应。
为了使应用客户端可以通过一条无线通信链路接收一个以上远端客户端发送的数据,在本实施例中,在应用客户端和一个以上远端客户端之间设置一个中转服务器,该中转服务器通过有线网络与一个以上远端客户端进行数据通信,通过无线网络与应用客户端进行数据通信。并且该中转服务器还可以对接收到的数据进行相应的格式转化。
在本实施例中,中转服务器和应用客户端,以及中转服务器和远端客户端之间进行数据通信之前,还可以包括中转服务器运行登录例程,使中转服务器和应用客户端创建连接,以及中转服务器和远端客户端创建连接。还可以使用应用客户端运行登录例程,使中转服务器和应用客户端创建连接,使用远端客户端运行登录例程,使中转服务器和远端客户端创建连接,在此不再一一赘述。
本发明实施例提供的数据通信方法,中转服务器通过有线网络接收一个以上远端客户端发送的数据,并将该数据转化为统一格式后使用一个网络通信套接字通过无线网络向应用客户端发送,从而通过一条无线通信链路实现远端客户端和应用客户端之间的数据通信,占用的无线网络带宽较少。本发明实施例解决了现有技术中需要使用多条无线通信链路进行数据通信,占用的无线网络带宽较大的问题。
为了使本发明实施例提供的数据通信方法,应用客户端既可以通过中转服务器接收远端客户端发送的数据并向应用客户端发送,还可以接收应用客户端发送的数据并向远端客户端发送,如图2所示,本发明实施例二提供的数据通信方法,包括:
步骤201至步骤204,应用客户端通过中转服务器接收并响应一个以上远端客户端发送的数据。具体过程可以参考图1中步骤101至步骤104,在此不再一一赘述。
步骤205,如果该线程监听到应用客户端创建的本地套接字变为可用,该线程运行应用客户端发送的数据的相应处理例程。
在本实施例中,应用客户端需要通过监听本地套接字判断应用客户端是否要向一个以上远端客户端发送数据。应用客户端创建的线程可以在监听网络通信套接字的同时监听本地套接字,使应用客户端既可以通过中转服务器接收远端客户端发送的数据,还可以通过中转服务器向远端客户端发送数据。
步骤206,中转服务器接收应用客户端通过无线网络发送的数据。
步骤207,中转服务器将应用客户端发送的数据转化为不同格式的数据。
在本实施例中,步骤207可以将应用客户端发送的每条数据转化为多条不同格式的数据,该不同格式的数据与远端客户端的数据格式对应。
步骤208,中转服务器通过有线网络分别向远端客户端发送不同格式的数据。
在本实施例中,使用应用客户端创建的线程监听本地套接字,可以用来判断该应用客户端是否要向一个以上远端客户端发送数据。当该应用客户端要向远端客户端发送数据时,该应用客户端创建的线程监听到本地套接字变为可用,该应用客户端首先从内核消息队列中取出数据,所述线程运行该数据的相应处理例程,可以实现应用客户端的数据发送。
在本实施例中,可以使用应用客户端首先创建一个主线程(Main Thread,MT),并对该主线程的入口函数,属性配置等进行定义,使该MT用于调度应用客户端内部的资源以及判断全局变量(Global Variables,GV)以及其他模块接口标志等;然后使用该主线程创建一个子线程,使该子线程用于运行工作例程或睡眠例程,且在同一时刻只能运行一种例程。
为了使应用客户端可以通过一条无线通信链路接收一个以上远端客户端发送的数据,并且还可以通过该无线通信链路向一个以上远端客户端发送数据,在本实施例中,在应用客户端和一个以上远端客户端之间设置一个中转服务器,该中转服务器通过有线网络与一个以上远端客户端进行数据通信,通过无线网络与应用客户端进行数据通信。并且该中转服务器还可以对接收到的数据进行相应的格式转化。
在本实施例中,中转服务器和应用客户端,以及中转服务器和远端客户端之间进行数据通信之前,还可以包括中转服务器运行登录例程,使中转服务器和应用客户端创建连接,以及中转服务器和远端客户端创建连接。还可以使用应用客户端运行登录例程,使中转服务器和应用客户端创建连接,使用远端客户端运行登录例程,使中转服务器和远端客户端创建连接,在此不再一一赘述。
在本实施例中,当短时间内远端客户端向应用客户端发送多条数据,或者应用客户端向远端客户端发送多条数据时,所述线程需要处理多条数据的多个相应处理例程。由于该线程同一时刻只能运行一个相应处理例程,因此该线程可能会有不能及时运行的相应处理例程,从而造成应用客户端接收/发送的数据的丢失。为了避免数据的丢失,可以首先将统一格式/应用客户端发送的数据的相应处理例程放入工作队列中,该工作队列是根据线程创建的;然后根据工作队列中相应处理例程的顺序,该线程运行统一格式/应用客户端发送的数据的相应处理例程。其中,根据工作队列中相应处理例程的顺序,包括:根据工作队列中相应处理例程的先后顺序,或者根据工作队列中相应处理例程的优先级顺序,还可以根据工作队列中相应处理例程的其他顺序,在此不再一一赘述。
在本实施例中,为了可以提高数据处理的实时性,还可以包括根据需求设置接收/发送相应处理例程的优先级顺序,从而使所述线程可以优先处理优先级较高的接收/发送相应处理例程。
进一步的,如图3所示,本实施例提供的数据通信方法,还包括:
步骤209,该线程运行完统一格式/应用客户端发送的数据的相应处理例程,且工作队列为空时,线程运行睡眠例程。
在本实施例中,为了当应用客户端创建的线程运行完相应处理例程时且工作队列为空时,可以维持应用客户端与中转服务器之间的连接,可以利用步骤209使该线程一直运行睡眠例程。并且,在该线程运行睡眠例程的同时,还可以监听网络通信套接字/本地套接字,从而保证应用客户端不会遗漏任何状态改变。当该线程运行睡眠例程时监听到网络通信套接字/本地套接字变为可用,该线程首先中断睡眠例程,然后运行相应处理例程。
在本实施例中,为了保证应用客户端不会遗漏数据,步骤204和步骤205可以使用两个线程监听网络通信套接字/本地套接字,即步骤204变为如果应用客户端创建的主线程和/或该主线程创建的子线程监听到网络通信套接字变为可用,该子线程运行统一格式的数据的相应处理例程;如果应用客户端创建的主线程和/或该主线程创建的子线程监听到应用客户端创建的本地套接字变为可用,该子线程运行应用客户端发送的数据的相应处理例程。
在本实施例中,为了避免使用两个线程监听网络通信套接字/本地套接字可能产生的竞争,可以使用全局变量、互斥锁和条件变量控制主线程和子线程,使主线程和子线程轮流监听网络通信套接字/本地套接字。具体的监听过程可以包括:
一、如果主线程检测到全局变量为0,主线程获取互斥锁并将全局变量置1。
二、该主线程得到互斥锁后,该主线程开始监听本地套接字/网络通信套接字。
三、该主线程监听完成后,主线程将全局变量清0并通知等待条件变量的子线程。
四、该主线程通知等待条件变量的子线程后,释放互斥锁。
五、如果所述子线程检测到条件变量,该子线程获取互斥锁并将全局变量置1。
六、该子线程得到互斥锁后,子线程开始监听本地套接字/网络通信套接字。
七、该子线程监听完成后,子线程将全局变量清0并释放互斥锁。
在本实施例中,当主线程和子线程使用全局变量、互斥锁和条件变量监听网络通信套接字/本地套接字时,在主线程监听网络通信套接字/本地套接字的过程中,全局变量为1且子线程不能获得条件变量,此时,子线程处于等待状态;当主线程监听完成时,全局变量为0,且子线程可以获取到条件变量;在子线程监听网络通信套接字/本地套接字的过程中,全局变量为1且主线程不能获取互斥锁;当子线程监听完成时,子线程释放互斥锁,从而实现主线程和子线程轮流监听网络通信套接字/本地套接字,避免了多线程监听同一个套接字时产生的竞争。
在本实施例中,在本实施例中,还可以使主线程采用非等待非阻塞方式(Non-WaitNon-Block,NWNB)只监听网络通信套接字,使子线程采用阻塞等待超时方式(Block ForTimeout,BFT)同时监听网络通信套接字和本地套接字,主线程和子线程还可以采用其他方式监听网络通信套接字和本地套接字,在此不再一一赘述。
在本实施例中,为了避免多个线程监听同一个套接字产生的竞争,采用全局变量、互斥锁和条件变量控制主线程和子线程轮流监听套接字。还可以使用其他方式控制主线程和子线程轮流监听套接字,在此不再一一赘述。
在本实施例中,如果应用客户端几次发送的数据,远端客户端都没有返回,则该应用客户端和远端客户端之间的连接断开,需要重新建立连接。
本实施例提供的数据通信方法,可以采用I/O多路转换的select机制,还可以采用其他机制,在此不再一一赘述。
本发明实施例提供的数据通信方法,应用客户端的客户端和服务器的角色可以互换。在这种复杂的互为客户端/服务器(client/server,c/s)通信模式中,应用客户端不仅作为服务器被动接收中转服务器发送的数据,还作为客户端主动向中转服务器发送数据,这期间为了节省网络资源,可以使用且仅使用同一个网络通信套接字进行通信。
本发明实施例提供的数据通信方法,中转服务器通过有线网络接收一个以上远端客户端发送的数据,并将该数据转化为统一格式后使用一个网络通信套接字通过无线网络向应用客户端发送,从而通过一条无线通信链路实现远端客户端和应用客户端之间的数据通信,占用的无线网络带宽较少。本发明实施例解决了现有技术中需要使用多条无线通信链路进行数据通信,占用的无线网络带宽较大的问题。
本发明实施例三提供的数据通信方法,包括:中转服务器接收一个以上远端客户端通过有线网络主动发送的数据,中转服务器将所述远端客户端发送的数据转化为统一格式的数据后使用网络通信套接字通过无线网络向应用客户端发送;或者
所述中转服务器接收所述应用客户端通过无线网络主动发送的数据,中转服务器将所述应用客户端发送的数据转化为不同格式的数据后通过有线网络向所述远端客户端发送。
进一步的,在中转服务器将统一格式的数据向应用客户端发送后,如果应用客户端创建的线程监听到网络通信套接字变为可用,该线程运行统一格式的数据的相应处理例程;在中转服务器接收应用客户端主动发送的数据之前,如果该线程监听到应用客户端创建的本地套接字变为可用,该线程运行应用客户端发送的数据的相应处理例程。
本发明实施例提供的数据通信方法,应用客户端的客户端和服务器的角色可以互换。在这种复杂的互为客户端/服务器(client/server,c/s)通信模式中,应用客户端不仅作为服务器被动接收中转服务器发送的数据,还作为客户端主动向中转服务器发送数据,这期间为了节省网络资源,可以使用且仅使用同一个网络通信套接字进行通信。
本发明实施例提供的数据通信方法,应用客户端可以通过中转服务器主动向远端客户端发送数据,远端客户端也可以通过中转服务器主动向应用客户端发送数据,实现应用客户端与远端客户端互为c/s通信模式;该通信模式可以充分利用远端客户端和应用客户端两端的硬件条件优势,将任务合理的分配到应用客户端和远端客户端,降低了数据通信系统的通讯开销,节省了数据通信系统的资源。
如图4所示,本发明实施例四提供的中转服务器,包括:
第一接收模块401,用于通过有线网络接收一个以上远端客户端发送的数据。
第一转化模块402,用于将第一接收模块401接收的数据转化为统一格式的数据。
第一发送模块403,用于通过无线网络使用网络通信套接字向应用客户端发送第一转化模块402得到的统一格式的数据。
在本实施例中,一个以上远端客户端可以发送多条数据,中转服务器可以使用第一转化模块402将多条数据转化为多条统一格式的数据,该统一格式的数据可以为任意中转服务器和应用客户端约定的格式,在此不再一一赘述。
为了使本实施例提供的中转服务器,既可以接收远端客户端发送的数据并向应用客户端发送,还可以接收应用客户端发送的数据并向远端客户端发送,进一步的,如图5所示,本实施例提供的中转服务器,还可以包括:
第二接收模块404,用于通过无线网络接收应用客户端发送的数据。
第二转化模块405,用于将第二接收模块404接收的数据转化为不同格式的数据。
在本实施例中,第二转化模块405可以将应用客户端发送的每条数据转化为多条不同格式的数据,该不同格式的数据与远端客户端的数据格式对应。
第二发送模块406,用于通过有线网络分别向一个以上远端客户端发送第二转化模块405得到的不同格式的数据。
为了使应用客户端可以通过一条无线通信链路接收一个以上远端客户端发送的数据,并且还可以通过该无线通信链路向一个以上远端客户端发送数据,在本实施例中,在应用客户端和一个以上远端客户端之间设置一个中转服务器,该中转服务器通过有线网络与一个以上远端客户端进行数据通信,通过无线网络与应用客户端进行数据通信。并且该中转服务器还可以对接收到的数据进行相应的格式转化。
本发明实施例提供的中转服务器,通过将一个以上远端客户端发送的数据转化为统一格式的数据,并通过无线网络向应用客户端发送,或者将应用客户端发送的数据转化为不同的格式,并通过有线网络向一个以上远端客户端发送,实现一个以上远端客户端和应用客户端之间的数据通过一条通信链路进行通信,占用的无线网络带宽较少。本发明实施例解决了现有技术中需要使用多条无线通信链路进行数据通信,占用的无线网络带宽较大的问题。
如图6所示,本发明实施例五提供的应用客户端,包括:
第三接收模块601,用于使用网络通信套接字接收中转服务器通过无线网络发送的数据。
第一处理模块602,用于当创建的线程监听到网络通信套接字变为可用时,该线程运行第三接收模块601接收的数据的相应处理例程。
在本实施例中,当短时间内远端客户端向应用客户端发送多条数据,或者应用客户端向远端客户端发送多条数据时,所述线程需要处理多条数据的多个相应处理例程。由于该线程同一时刻只能运行一个相应处理例程,因此该线程可能会有不能及时运行的相应处理例程,从而造成应用客户端接收/发送的数据的丢失。为了避免数据的丢失,第一处理模块602还可以包括:数据存放子模块和例程处理子模块。
其中,数据存放子模块,用于将统一格式的数据的相应处理例程放入工作队列中,该工作队列是根据所述线程创建的;
例程处理子模块,用于根据工作队列中相应处理例程的顺序,线程运行所述统一格式的数据的相应处理例程。
在本实施例中,例程处理子模块可以根据工作队列中相应处理例程的先后顺序,或者根据工作队列中相应处理例程的优先级顺序,还可以根据工作队列中相应处理例程的其他顺序,在此不再一一赘述。
在本实施例中,使用应用客户端创建的线程监听网络通信套接字,可以用来判断应用客户端是否接收中转服务器发送的数据。当该应用客户端接收到中转服务器发送的数据时,该应用客户端创建的线程监听到网络通信套接字变为可用,所述线程运行统一格式的数据的相应处理例程,可以实现应用客户端对一个以上远端客户端发送数据的响应。
为了使本实施例提供的应用客户端,客户端和服务器的结构可以互换,如图7所示,还可以包括:
第三发送模块603,用于通过无线网络向中转服务器发送数据。
第二处理模块604,用于当创建的线程监听到本地套接字变为可用时,该线程运行第三发送模块发送的数据的相应处理例程。
在本实施例中,
为了避免数据的丢失,第二处理模块604还可以包括:数据存放子模块和例程处理子模块。
其中,数据存放子模块,用于将应用客户端发送的数据的相应处理例程放入工作队列中,该工作队列是根据所述线程创建的;
例程处理子模块,用于根据工作队列中相应处理例程的顺序,线程运行应用客户端发送的数据的相应处理例程。
在本实施例中,例程处理子模块可以根据工作队列中相应处理例程的先后顺序,或者根据工作队列中相应处理例程的优先级顺序,还可以根据工作队列中相应处理例程的其他顺序,在此不再一一赘述。
在本实施例中,为了可以提高数据处理的实时性,还可以包括根据需求设置接收/发送相应处理例程的优先级顺序,从而使所述线程可以优先处理优先级较高的接收/发送相应处理例程。
在本实施例中,为了当应用客户端创建的线程运行完相应处理例程时且工作队列为空时,可以维持应用客户端与中转服务器之间的连接,所述应用客户端,还可以包括:
睡眠例程运行模块,用于所述线程运行完所述统一格式/应用客户端发送的数据的相应处理例程,且所述工作队列为空时,所述线程运行睡眠例程。
在本实施例中,使用睡眠例程运行模块运行睡眠例程。并且,在该线程运行睡眠例程的同时,还可以监听网络通信套接字/本地套接字,从而保证应用客户端不会遗漏任何状态改变。当该线程运行睡眠例程时监听到网络通信套接字/本地套接字变为可用,该线程首先中断睡眠例程,然后运行相应处理例程。
在本实施例中,为了保证应用客户端不会遗漏数据,如图8所示,所述应用客户端还可以包括:
监听模块605,用于所述应用客户端创建的主线程和/或所述主线程创建的子线程监听所述本地套接字/网络通信套接字。
在本实施例中,为了避免使用两个线程监听网络通信套接字/本地套接字可能产生的竞争,可以使用全局变量、互斥锁和条件变量控制主线程和子线程,使主线程和子线程轮流监听网络通信套接字/本地套接字。具体的监听模块605,如图9所示,可以包括:
主线程获取子模块6051,用于如果所述主线程检测到全局变量为0,所述主线程获取互斥锁并将所述全局变量置1。
主线程监听子模块6052,用于所述主线程得到互斥锁后,所述主线程开始监听所述本地套接字/网络通信套接字。
条件变量发送子模块6053,用于所述主线程监听完成后,所述主线程将所述全局变量清0并通知等待条件变量的子线程。
主线程释放子模块6054,用于主线程通知等待条件变量的子线程后,释放互斥锁。
子线程获取子模块6055,用于如果子线程检测到条件变量,子线程获取互斥锁并将所述全局变量置1。
子线程监听子模块6056,用于子线程得到互斥锁后,子线程开始监听本地套接字/网络通信套接字。
子线程释放子模块6057,用于子线程监听完成后,子线程将全局变量清0并释放互斥锁。
在本实施例中,当主线程和子线程使用全局变量、互斥锁和条件变量监听网络通信套接字/本地套接字时,在主线程监听网络通信套接字/本地套接字的过程中,全局变量为1且子线程不能获得条件变量,此时,子线程处于等待状态;当主线程监听完成时,全局变量为0,且子线程可以获取到条件变量;在子线程监听网络通信套接字/本地套接字的过程中,全局变量为1且主线程不能获取互斥锁;当子线程监听完成时,子线程释放互斥锁,从而实现主线程和子线程轮流监听网络通信套接字/本地套接字,避免了多线程监听同一个套接字时产生的竞争。
在本实施例中,还可以使主线程采用非等待非阻塞方式(Non-Wait Non-Block,NWNB)只监听网络通信套接字,使子线程采用阻塞等待超时方式(Block For Timeout,BFT)同时监听网络通信套接字和本地套接字,主线程和子线程还可以采用其他方式监听网络通信套接字和本地套接字,在此不再一一赘述。
本发明实施例提供的应用客户端,应用客户端的客户端和服务器的角色可以互换。在这种复杂的互为客户端/服务器(client/server,c/s)通信模式中,应用客户端不仅作为服务器被动接收中转服务器发送的数据,还作为客户端主动向中转服务器发送数据,这期间为了节省网络资源,可以使用且仅使用同一个网络通信套接字进行通信。
本发明实施例提供的应用客户端,通过使用一个网络通信套接字接收中转服务器通过无线网络向应用客户端发送的数据,从而通过一条无线通信链路实现远端客户端和应用客户端之间的数据通信,占用的无线网络带宽较少。本发明实施例解决了现有技术中需要使用多条无线通信链路进行数据通信,占用的无线网络带宽较大的问题。
为了使本领域技术人员可以理解本发明实施例提供的技术方案,本发明实施例六对本发明实施例提供的数据通信方法和装置进行具体说明。
随着智能交通系统的快速发展,数字监控产品的应用越来越广,该数字监控产品不仅可以进行本地视频监控,还可以向远端发送数据,远端也可以实现远程调度,以下以车载DVR为例。由于3G支持高速数据传输,并且可以同时传送声音和数据信息,因此本发明实施例以3G网络为例进行具体说明。
其中,车载DVR是专为智能交通系统设计的一款数字监控产品,它可以外接PAL/NTSC彩色或黑白摄像机,拍摄公交上的现场视频图像,并压缩存储在硬盘或SD卡等存储设备上。
公交司机使用车载DVR进行公交现场视频监控,当公交上发生抢劫、盗窃等意外时,需要使用车载DVR的应用客户端向远端客户端发送相关的报警数据,或者当车载DVR的应用客户端定时向远端客户端发送日志时,应用客户端作为客户端,具体过程可以包括:
一、应用客户端创建的线程监听到本地套接字变为可用,该线程运行应用客户端发送的数据的相应处理例程。
应用客户端创建的线程监听到本地套接字变为可用,即为该应用客户端要主动向一个以上远端客户端发送数据。此时,该线程从内核消息队列中取出数据,并将该数据发送给相应处理例程。
二、中转服务器接收应用客户端通过无线网络发送的数据。
三、中转服务器将应用客户端发送的数据转化为不同格式的数据。
在本实施例中,中转服务器可以讲应用客户端发送的数据转化为多条不同格式的数据,该不同格式的数据与远端客户端的数据格式对应。
四、中转服务器通过有线网络分别向远端客户端发送不同格式的数据。
通过上述步骤,可以实现应用客户端的客户端功能,即向远端客户端发送报警、日志等数据。
使用车载DVR进行本地视频监控时,远端的工作人员有时需要调度公交上的视频等信息,此时,需要远端客户端需要向应用客户端发送调度相应的数据,使应用客户端可以返回相应的数据,应用客户端作为服务器,具体过程可以包括:
一、中转服务器通过有线网络接收一个以上远端客户端发送的数据。
二、中转服务器将远端客户端发送的数据转化为统一格式的数据。
在本实施例中,一个以上远端客户端可以发送多条数据,中转服务器可以将该多条数据转化为多条统一格式的数据,该统一格式的数据可以为任意中转服务器和应用客户端约定的格式,在此不再一一赘述。
三、中转服务器使用网络通信套接字分别通过无线网络向应用客户端发送该统一格式的数据。
四、如果应用客户端创建的线程监听到该网络通信套接字变为可用,线程运行统一格式的数据的相应处理例程。
在本实施例中,当网络通信套接字变为可用时,即应用客户端接收到中转服务器发送的数据。
通过上述步骤,可以实现应用客户端的服务器功能,即接收远端客户端发送的数据,实现远端客户端的远程调度。
本发明实施例提供的数据通信方法和装置,应用客户端的客户端和服务器的角色可以互换。在这种复杂的互为客户端/服务器(client/server,c/s)通信模式中,应用客户端不仅作为服务器被动接收中转服务器发送的数据,还作为客户端主动向中转服务器发送数据,这期间为了节省网络资源,可以使用且仅使用同一个网络通信套接字进行通信。
本发明实施例提供的数据通信方法和装置,通过使用一个网络通信套接字接收中转服务器通过无线网络向应用客户端发送的数据,或者应用客户端使用一个网络通信套接字通过无线网络向远端服务器发送数据,从而通过一条无线通信链路实现远端客户端和应用客户端之间的数据通信,使得占用的无线网络带宽较少。本发明实施例解决了现有技术中需要使用多条无线通信链路进行数据通信,占用的无线网络带宽较大的问题。
本发明实施例提供的数据通信方法和装置,可以应用在通信网络中,尤其适用于3G网络。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种数据通信方法,其特征在于,包括:
中转服务器通过有线网络接收一个以上远端客户端发送的数据;
所述中转服务器将所述远端客户端发送的数据转化为统一格式的数据;
所述中转服务器使用网络通信套接字分别通过无线网络向应用客户端发送所述统一格式的数据;
如果所述应用客户端创建的线程监听到所述网络通信套接字变为可用,所述线程运行所述统一格式的数据的相应处理例程。
2.根据权利要求1所述的数据通信方法,其特征在于,还包括:
如果所述线程监听到所述应用客户端创建的本地套接字变为可用,所述线程运行所述应用客户端发送的数据的相应处理例程;
所述中转服务器接收所述应用客户端通过无线网络发送的数据;
所述中转服务器将所述应用客户端发送的数据转化为不同格式的数据;
所述中转服务器通过有线网络分别向所述远端客户端发送所述不同格式的数据。
3.根据权利要求1或2所述的数据通信方法,其特征在于:
所述如果所述应用客户端创建的线程监听到所述网络通信套接字变为可用,所述线程运行所述统一格式的数据的相应处理例程,包括:如果所述应用客户端创建的主线程和/或所述主线程创建的子线程监听到所述网络通信套接字变为可用,所述子线程运行所述统一格式的数据的相应处理例程;
所述如果所述线程监听到所述应用客户端创建的本地套接字变为可用,所述线程运行所述应用客户端发送的数据的相应处理例程,包括:如果所述应用客户端创建的主线程和/或所述主线程创建的子线程监听到所述本地套接字变为可用,所述子线程运行所述应用客户端发送的数据的相应处理例程。
4.根据权利要求3所述的数据通信方法,其特征在于,还包括:
如果所述主线程检测到全局变量为0,所述主线程获取互斥锁并将所述全局变量置1;
所述主线程得到所述互斥锁后,所述主线程开始监听所述本地套接字/网络通信套接字;
所述主线程监听完成后,所述主线程将所述全局变量清0并通知等待条件变量的子线程;
所述主线程通知所述等待条件变量的子线程后,释放所述互斥锁;
如果所述子线程检测到所述条件变量,所述子线程获取所述互斥锁并将所述全局变量置1;
所述子线程得到所述互斥锁后,所述子线程开始监听所述本地套接字/网络通信套接字;
所述子线程监听完成后,所述子线程将所述全局变量清0并释放所述互斥锁。
5.一种数据通信方法,其特征在于,包括:
中转服务器接收一个以上远端客户端通过有线网络主动发送的数据,所述中转服务器将所述远端客户端发送的数据转化为统一格式的数据后使用网络通信套接字通过无线网络向应用客户端发送;或者
所述中转服务器接收所述应用客户端通过无线网络主动发送的数据,所述中转服务器将所述应用客户端发送的数据转化为不同格式的数据后通过有线网络向所述远端客户端发送。
6.根据权利要求5所述的数据通信方法,其特征在于:
所述中转服务器将所述远端客户端发送的数据转化为统一格式的数据后使用网络通信套接字通过无线网络向应用客户端发送之后,所述方法还包括:如果所述应用客户端创建的线程监听到所述网络通信套接字变为可用,所述线程运行所述统一格式的数据的相应处理例程;
所述中转服务器接收所述应用客户端通过无线网络主动发送的数据之前,所述方法还包括:如果所述线程监听到所述应用客户端创建的本地套接字变为可用,所述线程运行所述应用客户端发送的数据的相应处理例程。
7.一种中转服务器,其特征在于,包括:
第一接收模块,用于通过有线网络接收一个以上远端客户端发送的数据;
第一转化模块,用于将所述第一接收模块接收的数据转化为统一格式的数据;
第一发送模块,用于通过无线网络使用网络通信套接字向应用客户端发送所述第一转化模块得到的统一格式的数据。
8.根据权利要求7所述的中转服务器,其特征在于,还包括:
第二接收模块,用于通过无线网络接收所述应用客户端发送的数据;
第二转化模块,用于将所述第二接收模块接收的数据转化为不同格式的数据;
第二发送模块,用于通过有线网络分别向所述一个以上远端客户端发送所述第二转化模块得到的不同格式的数据。
9.一种应用客户端,其特征在于,包括:
第三接收模块,用于使用网络通信套接字接收中转服务器通过无线网络发送的数据;
第一处理模块,用于当创建的线程监听到所述网络通信套接字变为可用时,所述线程运行所述第三接收模块接收的数据的相应处理例程。
10.根据权利要求9所述的应用客户端,其特征在于,还包括:
第三发送模块,用于通过无线网络向所述中转服务器发送数据;
第二处理模块,用于当创建的线程监听到本地套接字变为可用时,所述线程运行所述第三发送模块发送的数据的相应处理例程。
11.根据权利要求9所述的应用客户端,其特征在于,还包括:
监听模块,用于所述应用客户端创建的主线程和/或所述主线程创建的子线程监听所述本地套接字/网络通信套接字。
12.根据权利要求11所述的应用客户端,其特征在于,所述监听模块,包括:
主线程获取子模块,用于如果所述主线程检测到全局变量为0,所述主线程获取互斥锁并将所述全局变量置1;
主线程监听子模块,用于所述主线程得到所述互斥锁后,所述主线程开始监听所述本地套接字/网络通信套接字;
条件变量发送子模块,用于所述主线程监听完成后,所述主线程将所述全局变量清0并通知等待条件变量的子线程;
主线程释放子模块,用于所述主线程通知所述等待条件变量的子线程后,释放所述互斥锁;
子线程获取子模块,用于如果所述子线程检测到所述条件变量,所述子线程获取所述互斥锁并将所述全局变量置1;
子线程监听子模块,用于所述子线程得到所述互斥锁后,所述子线程开始监听所述本地套接字/网络通信套接字;
子线程释放子模块,用于所述子线程监听完成后,所述子线程将所述全局变量清0并释放所述互斥锁。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010624818.2A CN102546733B (zh) | 2010-12-31 | 2010-12-31 | 数据通信方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010624818.2A CN102546733B (zh) | 2010-12-31 | 2010-12-31 | 数据通信方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102546733A true CN102546733A (zh) | 2012-07-04 |
CN102546733B CN102546733B (zh) | 2015-09-02 |
Family
ID=46352689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010624818.2A Expired - Fee Related CN102546733B (zh) | 2010-12-31 | 2010-12-31 | 数据通信方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102546733B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2891503Y (zh) * | 2006-04-26 | 2007-04-18 | 北京华科广通信息技术有限公司 | 信息系统或设备的安全防护系统 |
CN101202704A (zh) * | 2007-09-07 | 2008-06-18 | 深圳市同洲电子股份有限公司 | 一种数据的传输方法及系统 |
CN101815065A (zh) * | 2010-01-21 | 2010-08-25 | 清华大学 | 基于IPv6网SIP协议的远程医疗实时信息交互方法 |
CN101908981A (zh) * | 2010-09-03 | 2010-12-08 | 烽火通信科技股份有限公司 | 一种告警、性能数据屏蔽统一处理的方法 |
-
2010
- 2010-12-31 CN CN201010624818.2A patent/CN102546733B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN2891503Y (zh) * | 2006-04-26 | 2007-04-18 | 北京华科广通信息技术有限公司 | 信息系统或设备的安全防护系统 |
CN101202704A (zh) * | 2007-09-07 | 2008-06-18 | 深圳市同洲电子股份有限公司 | 一种数据的传输方法及系统 |
CN101815065A (zh) * | 2010-01-21 | 2010-08-25 | 清华大学 | 基于IPv6网SIP协议的远程医疗实时信息交互方法 |
CN101908981A (zh) * | 2010-09-03 | 2010-12-08 | 烽火通信科技股份有限公司 | 一种告警、性能数据屏蔽统一处理的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102546733B (zh) | 2015-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN202772924U (zh) | 智能云卡口系统 | |
WO2008069536A1 (en) | Apparatus and method for adaptive sleep of wirelessly networked devices | |
CN103135524A (zh) | 一种配电站房监控系统 | |
CN105791752A (zh) | 一种信号共缆传输的方法与装置 | |
CN202085266U (zh) | 一种数字视频监控系统 | |
CN101631334A (zh) | 一种基于WiMAX无线网络的远程监控方法和系统 | |
CN103384335B (zh) | 一种视频格式转换方法、系统及装置 | |
CN108390895A (zh) | 基于sip的多媒体指挥调度系统及方法 | |
CN202009406U (zh) | 列车信息网络系统 | |
CN108696720B (zh) | 一种适用于卫星通信的视频调度系统和方法 | |
CN201717895U (zh) | 一种基于多种3g网络和wifi协议的电力多态遥视系统 | |
WO2012031542A1 (zh) | 一种无线传感网建立通信的方法、系统及装置 | |
CN102546733A (zh) | 数据通信方法和装置 | |
CN202190350U (zh) | 远程数字视频监控系统 | |
CN203232302U (zh) | 一种基于3g的燃料电池备用电源系统远程监控系统 | |
CN110677841A (zh) | 一种基于蓝牙拓扑网络的实验室数据管理方法及装置 | |
CN201523434U (zh) | 楼层交换机 | |
CN104349128A (zh) | 一种视音频编码设备与系统及其存储提取方法 | |
CN201360310Y (zh) | 一种无线视频服务器 | |
CN202496009U (zh) | 高清无延时硬盘录像机 | |
CN206968947U (zh) | 舰船网络通道信息采集装置 | |
CN217563686U (zh) | 远距离视频传输装置 | |
CN216086857U (zh) | 一种基于大数据网络的道路监控设备 | |
CN110912971A (zh) | 一种agv小车实时监测系统 | |
CN202475653U (zh) | 基于3g网络的监控系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150902 Termination date: 20191231 |