CN107769935A - 一种消息传输方法及装置 - Google Patents
一种消息传输方法及装置 Download PDFInfo
- Publication number
- CN107769935A CN107769935A CN201610710415.7A CN201610710415A CN107769935A CN 107769935 A CN107769935 A CN 107769935A CN 201610710415 A CN201610710415 A CN 201610710415A CN 107769935 A CN107769935 A CN 107769935A
- Authority
- CN
- China
- Prior art keywords
- obstruction
- client
- service end
- passage
- message
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
Abstract
本发明实施例是关于一种消息传输方法及装置,在服务端向客户端发送广播消息时,通过调用服务端中预先建立的非阻塞服务端,并通过调用的非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送广播消息。客户端通过预先建立的非阻塞客户端,通过调用与非阻塞服务端之间的非阻塞通道,可以随时或周期性的接收客户端发送的广播消息。这样可以有效的避免现有技术当中,因服务端通常采用阻塞方式向客户端发送广播消息,导致出现资源浪费的问题。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种消息传输方法及装置。
背景技术
随着网络系统的快速发展,网络系统的规模也越来越大,集群系统呈现普遍的趋势。越来越多的个人和企业通过网络传输的方式实现资源共享,服务端和客户端之间的通信也显得愈发重要。在服务端需要向其它客户端发送消息时,很多时候采取的是以广播的形式向客户端发送。
然而,现有技术中,服务端在向客户端发送广播消息及客户端接收服务端发送的广播消息时,通常采用传统的阻塞IO(输入/输出)方式发送和接收广播消息。其中,传统的阻塞式IO中,服务端与客户端之间的每个连接必须要开一个线程来处理,并且没处理完线程不能退出。虽然这种方式具有很高的响应速度,控制起来也很简单,且在连接数较少的时候也非常有效,但是如果对每一个连接都产生一个线程,这无疑会对服务端的系统资源造成严重的浪费,一旦服务端与客户端之间的连接数较多,将会出现资源严重不足的情况。因此,在服务端与客户端之间以传统的阻塞IO方式发送、接收广播消息时,很可能会造成服务端资源的严重浪费,在不发送/接收广播消息时,大量的线程维护也造成资源的严重浪费。
发明内容
为了避免在服务端与客户端之间以传统的阻塞IO方式发送、接收广播消息时,造成服务端出现资源浪费严重的问题,本发明实施例提供了一种消息传输方法及装置。
根据本发明实施例的第一方面,提供一种消息传输方法,包括:
向客户端发送消息时,若确定所发消息为广播消息,则调用非阻塞服务端;
通过调用的所述非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送所述广播消息;其中,各非阻塞客户端分别创建在各客户端,与各客户端一一对应。
根据本发明实施例的第一方面,提供一种消息传输方法,包括:
创建非阻塞客户端;
使用所述非阻塞客户端的非阻塞通道向非阻塞服务端发起通信连接请求,以使所述非阻塞服务端将所述非阻塞客户端的非阻塞通道注册到所述非阻塞服务端的选择器中,完成所述非阻塞服务端与所述非阻塞客户端之间非阻塞通道的建立,所述非阻塞服务端创建在服务端;
通过与所述非阻塞客户端建立的所述非阻塞通道,接收所述服务端通过所述非阻塞服务端发送的广播消息。
根据本发明实施例的第三方面,提供一种消息传输装置,包括:
调用模块,用于向客户端发送消息时,若确定所发消息为广播消息,则调用非阻塞服务端;
广播消息发送模块,用于通过调用的所述非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送所述广播消息;其中,各非阻塞客户端分别创建在各客户端,与各客户端一一对应。
根据本发明实施例的第四方面,提供一种消息传输装置,包括:
非阻塞客户端创建模块,用于创建非阻塞客户端;
请求发起模块,用于使用所述非阻塞客户端的非阻塞通道向非阻塞服务端发起通信连接请求,以使所述非阻塞服务端将所述非阻塞客户端的非阻塞通道注册到所述非阻塞服务端的选择器中,完成所述非阻塞服务端与所述非阻塞客户端之间非阻塞通道的建立,所述非阻塞服务端创建在服务端;
广播消息接收模块,用于通过与所述非阻塞客户端建立的所述非阻塞通道,接收所述服务端通过所述非阻塞服务端发送的广播消息。
本发明的实施例提供的技术方案可以包括以下有益效果:
本发明实施例提供的消息传输方法及装置,在服务端向客户端发送广播消息时,通过调用服务端中预先建立的非阻塞服务端,并通过调用的非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送广播消息。客户端通过预先建立的非阻塞客户端,通过调用与非阻塞服务端之间的非阻塞通道,可以随时或周期性的接收客户端发送的广播消息。这样可以有效的避免现有技术当中,因服务端通常采用阻塞方式向客户端发送广播消息,导致出现资源浪费的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明实施例。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明实施例的原理。
图1是根据本发明一示例性实施例示出的一种消息传输方法的应用场景示意图;
图2是根据本发明一示例性实施例示出的一种消息传输方法的流程图;
图3是根据本发明一示例性实施例示出的一种消息传输方法的流程图;
图4是图2中步骤S220的流程图;
图5是根据本发明一示例性实施例示出的一种消息传输方法的流程图;
图6是图5中步骤S530的流程图;
图7是根据本发明一示例性实施例示出的一种消息传输装置的结构示意图;
图8是根据本发明一示例性实施例示出的一种消息传输装置的结构示意图;
图9是图7中广播消息发送模块的示意图;
图10是根据本发明一示例性实施例示出的一种消息传输装置的结构示意图;
图11是根据本发明一示例性实施例示出的一种消息传输装置的结构示意图;
图12是图11中广播消息接收模块的示意图;
图13是根据本发明一示例性实施例示出的一种消息传输装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明实施例的一些方面相一致的装置和方法的例子。
在服务端向客户端发送广播消息时,服务端可能针对多个客户端发送广播消息,客户端采用传统阻塞IO方式接收服务端发送的广播消息时,如果服务端没有广播消息,那么客户端会进入等待状态,指导获取到服务端发送的广播消息为止。另外,由于传统的阻塞式IO中,服务端与客户端之间的每个连接必须要开一个线程来处理,并且没处理完线程不能退出,一旦服务端与客户端之间的连接数较多,会占用服务端大量的资源,将会出现资源严重不足的情况。
因此,为了避免在服务端与客户端之间以传统的阻塞IO方式发送、接收广播消息时,造成服务端资源严重浪费的问题本发明提供了一种消息传输方法及装置。
在本发明提供的一实施例中,如图1所示,提供了一种消息传输方法的应用场景示意图,图1包括:服务端100和多个客户端200。服务端100可以向多个客户端200发送广播消息,客户端200可以接收服务端发送的广播消息。其中,本发明实施例中采用Java中的NIO(非阻塞IO)方式为例进行说明,但本发明实施例不限于此。
在服务端100中创建BroadcastServer对象来建立非阻塞服务端,在客户端200中创建BroadcastClients对象来建立非阻塞客户端。在非阻塞服务端与非阻塞客户端之间建立非阻塞通道SocketChannel,并且将该非阻塞通道注册到非阻塞服务端的选择器selector中,这样非阻塞服务端与每个客户端200中的非阻塞客户端之间分别建立非阻塞通道。例如,非阻塞服务端使用SocketChannel的非阻塞模式,通过注册Accept事件,对服务端接口进行监听,随时准备接收客户端的连接。
在服务端100需要向客户端发送广播消息时,服务端100调用该BroadcastServer对象中的sendMsg(msg)向与服务端100通信连接的客户端200通过相应的非阻塞通道发送广播消息。其中,服务端100中的可以周期性的向客户端200发送广播消息,还可以根据需要随时向客户端200发送广播消息。
在非阻塞服务端通过对应的非阻塞通道向客户端发送广播消息时,非阻塞服务端的选择器selector会将非阻塞服务端需要发送的广播消息写入非阻塞缓冲区,并且非阻塞服务端的非阻塞缓冲区将非阻塞服务端所需发送的广播消息写入各个非阻塞客户端对应的非阻塞通道,非阻塞服务端完成向各个非阻塞客户端广播消息的发送。
另外,在客户端200中的非阻塞客户端需要接收非阻塞服务端发送的广播消息时,非阻塞客户端对应的非阻塞通道SocketChannel向非阻塞服务端发起通信连接请求,在非阻塞服务端接收到非阻塞通道发送的通信连接请求时,非阻塞服务端将非阻塞客户端的非阻塞通道注册到非阻塞服务端的选择器selector中,完成非阻塞服务端与阻塞客户端之间非阻塞通道的建立,非阻塞客户端通过该非阻塞通道接收非阻塞服务端发送的广播消息。具体的,根据需要,非阻塞客户端可以随时,或周期性的通过选择器读取非阻塞缓冲区中的广播消息,获取非阻塞服务端发送的广播消息。例如,客户端通过调用BroadcastClients对象的readMsg()方法来接收服务端发送的广播信息。
为了解决现有技术当中,因服务端通常采用阻塞方式向客户端发送广播消息,导致出现资源浪费的问题,以及详细阐述上述实施例的执行流程,结合上述实施例,本发明实施例中还提供了一种消息传输方法,应用于服务端中,如图2所示,该方法可以包括如下步骤:
在步骤S210中,向客户端发送消息时,若确定所发消息为广播消息,则调用非阻塞服务端。
可以结合上述实施例,本发明实施例中,在服务端向客户端发送消息时,需要检测该发送消息的类型,如果该消息为广播消息,说明服务端以广播的形式向各客户端发送消息。为了避免现有技术中服务端采用传统的阻塞方式向各客户端发送广播消息,进而导致出现资源浪费的现象,本发明实施例中服务端调用非阻塞服务端来发送广播消息给各客户端。
在步骤S220中,通过调用的非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送广播消息。
为了实现服务端广播消息的发送及客户端接收该广播消息,服务端中预先建立非阻塞服务端,在客户端中预先建立非阻塞客户端,并且在非阻塞服务端与各非阻塞客户端之间建立非阻塞通道,非阻塞服务端通过该非阻塞通道向非阻塞客户端发送广播消息。
其中,各非阻塞客户端分别创建在各客户端,与各客户端一一对应。
本发明实施例中,在服务端向客户端发送广播消息及客户端接收服务端发送的广播消息时,采用非阻塞IO的方式,在客户端没有获取到服务端发送的广播消息时,可以不必向阻塞IO方式那样一直处于等待状态,而是立即返回,避免资源的浪费。
作为图2方法的细化,在本发明提供的又一实施例中,在步骤S210之前,如图3所示,该方法还可以包括如下步骤:
在步骤S201中,创建非阻塞服务端。
在步骤S202中,接收各非阻塞客户端使用对应非阻塞通道发起的通信连接请求。
在步骤S203中,将各非阻塞客户端对应的非阻塞通道注册到非阻塞服务端的选择器中,完成非阻塞服务端与各非阻塞客户端之间非阻塞通道的建立。
例如,当客户端接入服务端时,客户端激活服务端的对应Accept事件代码。完成连接后,服务端将客户端的SocketChannel通道注册到自身选择器selector中。
本发明实施例中通过在服务端中预先创建非阻塞服务端,非阻塞服务端接收到各非阻塞客户端通过对应的非阻塞通道发起的通信连接请求时,非阻塞服务端将各非阻塞客户端对应的非阻塞通道注册到非阻塞服务端的选择器中,从而完成非阻塞服务端与各非阻塞客户端之间非阻塞通道的建立。具体可以参见上述实施例,这里不再赘述。
为了详细阐述如何通过调用非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,达到非阻塞服务端向各客户端发送广播消息的目的,在本发明提供的又一实施例中,作为图2方法的细化,如图4所示,步骤S220还可以包括如下步骤:
在步骤S221中,通过非阻塞服务端的选择器将待发送的广播消息,写入非阻塞服务端的非阻塞缓冲区。
在步骤S222中,通过非阻塞服务端的非阻塞缓冲区将广播消息写入各个非阻塞客户端对应的非阻塞通道,完成向各客户端发送广播消息。
例如,非阻塞服务端先将缓冲区清空,将发送的广播消息转化为byte数组,并将该byte数组存入缓冲区。此时该缓冲区切换到可读模式,并将缓冲区中的数据写入与非阻塞客户端对应的非阻塞通道,进而完成向各客户端发送广播消息。
另外,如果服务端中的服务端向客户端中的客户端发送的消息为非广播消息,服务端可以与对应的客户端建立阻塞通道,服务端通过该阻塞通过向客户端发送非广播消息。
在本发明提供的又一实施例中,还提供了一种消息传输方法,应用于客户端中,如图5所示,该方法可以包括如下步骤:
在步骤S510中,创建非阻塞客户端。
在步骤S520中,使用非阻塞客户端的非阻塞通道向非阻塞服务端发起通信连接请求,以使非阻塞服务端将非阻塞客户端的非阻塞通道注册到非阻塞服务端的选择器中,完成非阻塞服务端与非阻塞客户端之间非阻塞通道的建立,非阻塞服务端创建在服务端。
在步骤S530中,通过与非阻塞客户端建立的非阻塞通道,接收服务端通过非阻塞服务端发送的广播消息。
本发明实施例通过预先在客户端创建非阻塞客户端,并使用非阻塞客户端的非阻塞通道向非阻塞服务端发起通信连接请求,这样非阻塞服务端将各非阻塞客户端的非阻塞通道注册到服务端的选择器当中,以完成非阻塞服务端与阻塞客户端之间非阻塞通道的建立,这样非阻塞客户端可以通过创建的非阻塞通道接收非阻塞服务端发送的广播消息。
为了详细阐述非阻塞客户端如何接收非阻塞服务端发送的广播消息,作为图5方法的细化,在本发明的另一实施例中,如图6所示,步骤S530还可以包括如下步骤:
在步骤S531中,通过非阻塞通道将广播消息写入非阻塞客户端的非阻塞缓冲区。
在步骤S532中,需要读取广播消息时,通过非阻塞客户端的选择器读取非阻塞缓冲区中的广播消息,完成广播消息的接收。
在非阻塞服务端与非阻塞客户端之间的非阻塞通道创建完成之后,在非阻塞客户端通过非阻塞通道接收非阻塞服务端发送的广播消息时,非阻塞服务端会将所需发送的广播消息写入非阻塞客户端的非阻塞缓冲区,在非阻塞客户端需要读取该广播消息时,非阻塞客户端通过选择器读取非阻塞缓冲区中的该广播消息,进而完成广播消息的接收。
另外,如果客户端中的客户端需要接收服务端发送的消息为非广播消息,服务端与客户端之间建立阻塞通道,客户端通过该阻塞通道接收服务端发送的非广播消息。
本发明实施例中使用Java的NIO技术,在服务端向客户端发送广播消息时,可以实现广播消息的高性能传输,并且专门针对广播通信,用户可以灵活地根据实际情况决定客户端的发送时机、频率和客户端是否接收和接收时机。
本发明实施例提供的消息传输方法,在服务端向客户端发送广播消息时,通过调用服务端中预先建立的非阻塞服务端,并通过调用的非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送广播消息。客户端通过预先建立的非阻塞客户端,通过调用与非阻塞服务端之间的非阻塞通道,可以随时或周期性的接收客户端发送的广播消息。这样可以有效的避免现有技术当中,因服务端通常采用阻塞方式向客户端发送广播消息,导致出现资源浪费的问题。
通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本发明实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
另外,作为对上述各实施例的实现,本发明实施例还提供了一种消息传输装置,该装置位于服务端中,如图7所示,该装置包括:
调用模块10,用于向客户端发送消息时,若确定所发消息为广播消息,则调用非阻塞服务端;
广播消息发送模块20,用于通过调用的所述非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送所述广播消息。
其中,各非阻塞客户端分别创建在各客户端,与各客户端一一对应。
在本发明又一实施例中,基于图7,如图8所示,所述装置还包括:
非阻塞服务端创建模块30,用于创建所述非阻塞服务端;
接收模块40,用于接收各非阻塞客户端使用对应非阻塞通道发起的通信连接请求;
注册模块50,用于将各非阻塞客户端对应的非阻塞通道注册到所述非阻塞服务端的选择器中,完成所述非阻塞服务端与各非阻塞客户端之间非阻塞通道的建立。
在本发明又一实施例中,基于图7,如图9所示,所述广播消息发送模块20,具体包括:
第一广播消息写入子模块21,用于通过所述非阻塞服务端的选择器将待发送的所述广播消息,写入所述非阻塞服务端的非阻塞缓冲区;
第二广播消息写入子模块22,用于通过所述非阻塞服务端的非阻塞缓冲区将所述广播消息写入各个非阻塞客户端对应的非阻塞通道,完成向各客户端发送所述广播消息。
在本发明又一实施例中,基于图7,如图10所示,该装置还可以包括:
阻塞通道建立模块60,用于在所发消息非广播消息时,则与对应的客户端建立阻塞通道;
非广播消息发送模块70,用于通过阻塞通道发送。
作为对上述各实施例的实现,本发明实施例还提供了一种消息传输装置,该装置位于客户端中,如图11所示,该装置包括:
非阻塞客户端创建模块910,用于创建非阻塞客户端;
请求发起模块920,用于使用所述非阻塞客户端的非阻塞通道向非阻塞服务端发起通信连接请求,以使所述非阻塞服务端将所述非阻塞客户端的非阻塞通道注册到所述非阻塞服务端的选择器中,完成所述非阻塞服务端与所述非阻塞客户端之间非阻塞通道的建立,所述非阻塞服务端创建在服务端;
广播消息接收模块930,用于通过与所述非阻塞客户端建立的所述非阻塞通道,接收所述服务端通过所述非阻塞服务端发送的广播消息。
在本发明又一实施例中,基于图11,如图12所示,广播消息接收模块930,包括:
第三广播消息写入子模块931,用于通过所述非阻塞通道将所述广播消息写入非阻塞客户端的非阻塞缓冲区;
第四广播消息写入子模块932,用于需要读取广播消息时,通过所述非阻塞客户端的选择器读取非阻塞缓冲区中的所述广播消息,完成所述广播消息的接收。
在本发明又一实施例中,基于图11,如图13所示,所述装置还包括:
通道建立模块940,用于在需要向所述服务端发送消息时,与所述服务端建立阻塞通道;
消息发送模块950,用于通过阻塞通道发送。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本发明实施例提供的消息传输装置,在服务端向客户端发送广播消息时,通过调用服务端中预先建立的非阻塞服务端,并通过调用的非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送广播消息。客户端通过预先建立的非阻塞客户端,通过调用与非阻塞服务端之间的非阻塞通道,可以随时或周期性的接收客户端发送的广播消息。这样可以有效的避免现有技术当中,因服务端通常采用阻塞方式向客户端发送广播消息,导致出现资源浪费的问题。
可以理解的是,本发明实施例可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域技术人员在考虑说明书及实践这里公开的发明实施例后,将容易想到本发明实施例的其它实施方案。本申请旨在涵盖本发明实施例的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明实施例的一般性原理并包括本发明实施例未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明实施例的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明实施例并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明实施例的范围仅由所附的权利要求来限制。
Claims (10)
1.一种消息传输方法,其特征在于,所述方法包括:
向客户端发送消息时,若确定所发消息为广播消息,则调用非阻塞服务端;
通过调用的所述非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送所述广播消息;其中,各非阻塞客户端分别创建在各客户端,与各客户端一一对应。
2.根据权利要求1所述的方法,其特征在于,所述向客户端发送消息之前或者所述调用非阻塞服务端之前,所述方法还包括:
创建所述非阻塞服务端;
接收各非阻塞客户端使用对应非阻塞通道发起的通信连接请求;
将各非阻塞客户端对应的非阻塞通道注册到所述非阻塞服务端的选择器中,完成所述非阻塞服务端与各非阻塞客户端之间非阻塞通道的建立。
3.根据权利要求1所述的方法,其特征在于,所述通过调用的所述非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送所述广播消息,具体包括:
通过所述非阻塞服务端的选择器将待发送的所述广播消息,写入所述非阻塞服务端的非阻塞缓冲区;
通过所述非阻塞服务端的非阻塞缓冲区将所述广播消息写入各个非阻塞客户端对应的非阻塞通道,完成向各客户端发送所述广播消息。
4.根据权利要求1所述的方法,其特征在于,若所发消息非广播消息,则与对应的客户端建立阻塞通道,并通过阻塞通道发送。
5.一种消息传输方法,其特征在于,所述方法包括:
创建非阻塞客户端;
使用所述非阻塞客户端的非阻塞通道向非阻塞服务端发起通信连接请求,以使所述非阻塞服务端将所述非阻塞客户端的非阻塞通道注册到所述非阻塞服务端的选择器中,完成所述非阻塞服务端与所述非阻塞客户端之间非阻塞通道的建立,所述非阻塞服务端创建在服务端;
通过与所述非阻塞客户端建立的所述非阻塞通道,接收所述服务端通过所述非阻塞服务端发送的广播消息。
6.根据权利要求5所述的方法,其特征在于,通过与所述非阻塞客户端建立的所述非阻塞通道,接收所述服务端通过所述非阻塞服务端发送的广播消息,包括:
通过所述非阻塞通道将所述广播消息写入非阻塞客户端的非阻塞缓冲区;
需要读取广播消息时,通过所述非阻塞客户端的选择器读取非阻塞缓冲区中的所述广播消息,完成所述广播消息的接收。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当需要向所述服务端发送消息时,与所述服务端建立阻塞通道并通过阻塞通道发送。
8.一种消息传输装置,其特征在于,所述装置包括:
调用模块,用于向客户端发送消息时,若确定所发消息为广播消息,则调用非阻塞服务端;
广播消息发送模块,用于通过调用的所述非阻塞服务端与各非阻塞客户端之间建立的非阻塞通道,向各客户端发送所述广播消息;其中,各非阻塞客户端分别创建在各客户端,与各客户端一一对应。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
非阻塞服务端创建模块,用于创建所述非阻塞服务端;
接收模块,用于接收各非阻塞客户端使用对应非阻塞通道发起的通信连接请求;
注册模块,用于将各非阻塞客户端对应的非阻塞通道注册到所述非阻塞服务端的选择器中,完成所述非阻塞服务端与各非阻塞客户端之间非阻塞通道的建立。
10.一种消息传输装置,其特征在于,所述装置包括:
非阻塞客户端创建模块,用于创建非阻塞客户端;
请求发起模块,用于使用所述非阻塞客户端的非阻塞通道向非阻塞服务端发起通信连接请求,以使所述非阻塞服务端将所述非阻塞客户端的非阻塞通道注册到所述非阻塞服务端的选择器中,完成所述非阻塞服务端与所述非阻塞客户端之间非阻塞通道的建立,所述非阻塞服务端创建在服务端;
广播消息接收模块,用于通过与所述非阻塞客户端建立的所述非阻塞通道,接收所述服务端通过所述非阻塞服务端发送的广播消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610710415.7A CN107769935A (zh) | 2016-08-23 | 2016-08-23 | 一种消息传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610710415.7A CN107769935A (zh) | 2016-08-23 | 2016-08-23 | 一种消息传输方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107769935A true CN107769935A (zh) | 2018-03-06 |
Family
ID=61264754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610710415.7A Pending CN107769935A (zh) | 2016-08-23 | 2016-08-23 | 一种消息传输方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107769935A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111722944A (zh) * | 2020-06-15 | 2020-09-29 | 哈工大机器人(合肥)国际创新研究院 | 一种基于nio的airt-ros通信方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130150098A1 (en) * | 2009-12-17 | 2013-06-13 | Robert Sanchez | Computer To Mobile Two-Way Chat System And Method |
CN104935571A (zh) * | 2015-04-22 | 2015-09-23 | 深圳橙子游戏科技有限公司 | 一种电视游戏服务端与客户端的交互方法 |
-
2016
- 2016-08-23 CN CN201610710415.7A patent/CN107769935A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130150098A1 (en) * | 2009-12-17 | 2013-06-13 | Robert Sanchez | Computer To Mobile Two-Way Chat System And Method |
CN104935571A (zh) * | 2015-04-22 | 2015-09-23 | 深圳橙子游戏科技有限公司 | 一种电视游戏服务端与客户端的交互方法 |
Non-Patent Citations (2)
Title |
---|
代超,邓中亮: ""基于Netty的面向移动终端的推送服务设计"", 《软件》 * |
张应昌: ""基于异构网络的物联网智能家居系统设计与实现"", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111722944A (zh) * | 2020-06-15 | 2020-09-29 | 哈工大机器人(合肥)国际创新研究院 | 一种基于nio的airt-ros通信方法及系统 |
CN111722944B (zh) * | 2020-06-15 | 2023-04-18 | 合肥哈工轩辕智能科技有限公司 | 一种基于nio的airt-ros通信方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108494817A (zh) | 数据传输方法、相关装置及系统 | |
US10481921B2 (en) | Cloud platform, application running method, and access network unit | |
CN107958021B (zh) | 业务流程数据的处理方法、装置、存储介质及设备 | |
KR20220038827A (ko) | 데이터 저장소를 파티셔닝하고 리밸런싱하는 기법 | |
US10284670B1 (en) | Network-controlled device management session | |
AU2019256257B2 (en) | Processor core scheduling method and apparatus, terminal, and storage medium | |
CN109068153A (zh) | 视频播放方法、装置和计算机可读存储介质 | |
CN112260853B (zh) | 容灾切换方法、装置、存储介质及电子设备 | |
CN103973547A (zh) | 图片显示方法和装置 | |
CN112653670A (zh) | 业务逻辑漏洞检测方法、装置、存储介质以及终端 | |
US20210185740A1 (en) | Enabling communications between a controlling device and a network-controlled device via a network-connected device service over a mobile communications network | |
CN111464352A (zh) | 调用链路数据处理方法及装置 | |
CN106330878A (zh) | 管理视频流解析的方法及装置 | |
CN111431730B (zh) | 一种业务处理方法、系统、计算机设备及可读介质 | |
CN107769935A (zh) | 一种消息传输方法及装置 | |
WO2021190088A1 (zh) | 任务派发方法、装置、任务执行系统和服务器 | |
US11381630B2 (en) | Transmitting data over a network in representational state transfer (REST) applications | |
CN114327846A (zh) | 集群的扩容方法、装置、电子设备及计算机可读存储介质 | |
CN111190731A (zh) | 基于权重的集群任务调度系统 | |
CN109218371B (zh) | 一种调用数据的方法和设备 | |
CN111294377A (zh) | 一种依赖关系的网络请求发送方法、终端装置及存储介质 | |
CN113867946A (zh) | 访问资源的方法、装置、存储介质及电子设备 | |
CN111813407B (zh) | 游戏开发方法、游戏运行方法、装置和电子设备 | |
CN113014657A (zh) | 流量线路的切换方法、装置、存储介质及电子设备 | |
CN114040189A (zh) | 多媒体测试方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 818, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Applicant after: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building block A Room 601 Applicant before: BEIJING ULTRAPOWER SOFTWARE Co.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180306 |