1.一种和客户端进行通信的方法,其特征在于,所述方法包括:注册一虚拟服务名称,并创建微内核的监听端口;
基于多个客户端的获取请求,将所述监控接口发送给多个客户端,使得所述多个客户端基于所述监听接口发送各自的连接请求给所述监控接口;
接收所述多个客户端发送的各自的连接请求;
利用微内核信息服务器的线程为每个连接请求对应创建微内核消息会话实例,并生成各微内核消息会话实例的连接应答消息发送给各连接请求对应的客户端;
封装和各客户端进行通信的通信消息,并发送给对应的客户端。
2.如权利要求1所述的方法,其特征在于,所述注册一虚拟服务名称,并创建微内核Mach的监听端口,包括:调用OSX系统的bootstrap_check_in函数,将虚拟服务名称对应的字符串注册到OSX系统中,并获取到所述监听端口。
3.如权利要求1所述的方法,其特征在于,所述接收所述多个客户端发送的各自的连接请求,具体包括:利用微内核信息服务器的线程调用调用mach_msg系统函数接收来自各客户端的连接请求,其中各客户端的连接请求中携带有各客户端的端口名。
4.如权利要求3所述的方法,其特征在于,所述利用微内核信息服务器的线程为每个连接请求对应创建微内核消息会话实例,具体包括:通过调用微内核信息服务器的allocSession函数,为各连接请求创建各自的一个MachMessageSession会话实例;
调用MachMessageSession的createFrom方法来初始化该各MachMessageSession会话实例,使各MachMessageSession会话实例包含有两个参数:对应的客户端的端口名,本地端口名。
5.如权利要求4所述的方法,其特征在于,所述生成各微内核消息会话实例的连接应答消息发送给对应的客户端,包括:将各MachMessageSession会话实例的本地端口名封装到各自的连接应答消息中,并发送给对应的客户端的端口。
6.如权利要求1所述的方法,其特征在于,所述生成各微内核消息会话实例的连接应答消息发送给对应的客户端之后,所述方法还包括:将各MachMessageSession会话实例放入到m_sessions列表中进行管理;
在recvSessionMsg函数中对m_sessions列表中的所有MachMessageSession进行读取操作,以获取对应的客户端发送的通信消息。
7.如权利要求1所述的方法,其特征在于,各MachMessageData通信消息包含三个字段:第一个字段是类型为mach_msg_header_t的header字段,第二个字段是名称为payloadSize的整型字段,表示要发送的不包括头部结构的负载数据大小,以及名称为payload的负载数据;
所述封装和各客户端进行通信的通信消息,并发送给对应的客户端,具体包括:各MachMessageData通信消息的数据总量totalSize为MachMessageData的结构大小sizeof(MachMessageData)加上负载数据的大小payloadSize之和;
将各MachMessageData通信消息的数据总量totalSize和数值3进行与运算之后的结果是否为3,若是,则将所述通信消息发送给对应的客户端。
8.一种电子设备,其特征在于,包括:
注册模块,用以注册一虚拟服务名称,并创建微内核的监听端口;
发送模块,用以基于多个客户端的获取请求,将所述监控接口发送给多个客户端,使得所述多个客户端基于所述监听接口发送各自的连接请求给所述监控接口;
接收模块,用以接收所述多个客户端发送的各自的连接请求;
创建模块,用以利用微内核信息服务器的线程为每个连接请求对应创建微内核消息会话实例,并生成各微内核消息会话实例的连接应答消息发送给各连接请求对应的客户端;
封装模块,用于封装和各客户端进行通信的通信消息,并发送给对应的客户端。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7任一项所述方法的步骤。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-7任一项所述方法的步骤。