本发明专利技术涉及通讯技术领域,具体涉及一种Android系统下C++socket通讯与蜂窝网络同时使用方法。本发明专利技术采用如下技术方案:在Java层搜索并连接WiFi网络,并在Java层创建socket连接,并将该socket连接的相关数据传递到C++层,使得C++层可与对应的WiFi网络进行socket通讯,此时Java层还可同时通过蜂窝网络进行通讯。本发明专利技术的优点在于:通过将C++层创建socket连接的工作移到Java层来做,通过Java的反射,获取该socket连接的FileDescriptor类的数据,并将该socket连接的相关数据传递到C++层,由C++层根据该socket连接的相关数据进行socket通讯,从而使得C++层在进行socket通讯时,Java层可同时进行蜂窝网络通讯。层可同时进行蜂窝网络通讯。层可同时进行蜂窝网络通讯。
【技术实现步骤摘要】
一种Android系统下C++socket通讯与蜂窝网络同时使用方法
[0001]本专利技术涉及通讯
,具体涉及一种Android系统下C++socket通讯与蜂窝网络同时使用方法。
技术介绍
[0002]在Android系统中,C++层连接socket通讯需要将该进程绑定到特定的WiFi网络,而绑定后导致只能使用该特定的WiFi网络进行通讯,无法同时使用蜂窝网络和WiFi网络进行通讯。具体的,C++层连接socket时,先在Java层获取符合用户请求的网络并连接,接着将进程绑定到该网络,最后在C++层创建socket连接,进行socket通讯。WiFi网络和蜂窝网络可以同时连接不同的两个网络环境,但是当用户利用C++层进行socket通讯时将进程绑定到特定的WiFi网络,进程中所有的网络请求都通过该网络进行发送,无法对网络请求进行不同的分发处理,导致网络请求无法送达蜂窝网络环境而无法正确获取返回数据,导致WiFi网络和蜂窝网络无法同时使用。
技术实现思路
[0003]本专利技术的目的在于提供一种Android系统下C++socket通讯与蜂窝网络可同时使用方法。
[0004]为达到上述目的,本专利技术采用如下技术方案:一种Android系统下C++socket通讯与蜂窝网络同时使用方法,包括如下步骤:S01、在Android系统的Java层搜索WiFi网络,并连接到该WiFi网络。
[0005]S02、在Java层通过连接的WiFi网络的管理类创建socket连接。
[0006]S03、Java层将创建的socket连接的相关数据传递到C++层。
[0007]S04、C++层根据Java层传递过来的socket连接的相关数据进行socket通讯,此时Java层同时可以使用蜂窝网络进行通讯。
[0008]具体的,步骤S03中,socket连接的相关数据包括通过FileDescriptor获取的数据、所连接网络的IP地址以及端口信息。
[0009]具体的,步骤S03中通过FileDescriptor获取的数据,是通过Java层的SocketImpl类获取FileDescriptor类,再通过获取的FileDescriptor获取响应的数据。
[0010]具体的,步骤S03中,Java层的SocketImpl类是Java层通过创建的socket连接进行反射获取的。
[0011]本专利技术的优点在于:通过将C++层创建socket连接的工作移到Java层来做,通过Java的反射,获取该socket连接的FileDescriptor类的数据,并将该socket连接的相关数据传递到C++层,由C++层根据该socket连接的相关数据进行socket通讯,从而使得C++层在进行socket通讯时,Java层可同时进行蜂窝网络通讯。
附图说明
[0012]附图1为实施例中Android系统下C++socket通讯与蜂窝网络同时使用方法的通讯流程图。
具体实施方式
[0013]实施例,参照图1,一种Android系统下C++socket通讯与蜂窝网络同时使用方法,包括如下步骤:S01、在Android系统的Java层搜索WiFi网络,并连接到该WiFi网络。
[0014]S02、在Java层通过连接的WiFi网络的管理类创建socket连接。
[0015]S03、Java层通过Java反射获取所创建socket连接的SocketImpl类,再根据SocketImpl类获取FileDescriptor类,最后根据FileDescriptor类获取响应的数据,并将创建的socket连接的通过FileDescriptor获取的数据、所连接网络的IP地址以及端口信息传递到C++层。
[0016]S04、C++层根据Java层传递过来的socket连接的相关数据通过FileDescriptor类、所连接WiFi网络的IP地址及其对应的端口与socket连接进行socket通讯,此时Java层同时可以使用蜂窝网络进行通讯。
[0017]在本实施例中,将C++创建socket连接的工作转移到Java层进行,在Java层搜索目标WiFi网络,并创建socket连接,然后通过Java层的反射,获取该socket连接的SocketImpl和FileDescriptor,并将FileDescriptor获取的数据、所连接目标网络的IP地址和端口信息传递到C++层,C++层通过FileDescriptor、IP地址和对应的端口进行socket通讯,此时Java层可同时进行蜂窝网络的通讯。
[0018]其中,socket是一种对网络中不同主机上的应用进程之间进行双向通讯的端点上的抽象类,其相当于网络上进程通讯的一端,提供了应用层进程利用网络协议交换数据的机制,从位置上说,socket向上连接应用进程,向下连接网络协议栈,是应用程序通过网络协议进行通讯和交互的接口。FileDescriptor则作为文件描述符类的实例,用于表示打开的文件、打开的套接字或其他字节源或汇,其实际用途是创建一个文件输入流或文件输出流来包含它,实现与网络另一端的双向数据通讯。
[0019]当然,以上仅为本专利技术较佳实施方式,并非以此限定本专利技术的使用范围,故,凡是在本专利技术原理上做等效改变均应包含在本专利技术的保护范围内。
本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种Android系统下C++socket通讯与蜂窝网络同时使用方法,其特征在于,包括如下步骤:S01、在Android系统的Java层搜索WiFi网络,并连接到该WiFi网络;S02、在Java层通过连接的WiFi网络的管理类创建socket连接;S03、Java层将创建的socket连接的相关数据传递到C++层;S04、C++层根据Java层传递过来的socket连接的相关数据进行socket通讯,此时Java层可以同时使用蜂窝网络进行通讯。2.根据权利要求1所述的一种Android系统下C++socket通讯与蜂窝网络同时使用方法,其特征在于:步骤S03中,socket连接的相关数据包...
【专利技术属性】
技术研发人员:李德来,詹李嘉,邱浩淼,郭境峰,
申请(专利权)人:汕头市超声仪器研究所股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。