发明内容
本发明实施例提供一种服务信息发现方法及设备,用于提高进行服务发现时的信道资源利用率。
第一方面提供一种服务信息发现方法,包括:
发送第一查询请求消息,所述第一查询请求消息携带有第一哈希值,所述第一哈希值是对待发现服务的服务标识信息进行第一哈希运算获得的;
接收对端发送的第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识所述对端是否存在第一哈希运算的哈希值为所述第一哈希值的服务;
至少根据所述第一结果通告信息,确定所述对端是否存在所述待发现服务。
结合第一方面,在第一方面的第一种可能的实现方式中,所述第一结果通告信息为用于指示所述对端存在第一哈希运算的哈希值为所述第一哈希值的服务的存在指示信息;
所述至少根据所述第一结果通告信息,确定所述对端是否存在所述待发现服务包括:根据所述存在指示信息,向所述对端发送第二查询请求消息,所述第二查询请求消息携带有所述待发现服务的服务标识信息;接收所述对端返回的第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识所述对端是否存在所述待发现服务;如果所述第二结果通告信息标识所述对端存在所述待发现服务,确定所述对端存在所述待发现服务。
结合第一方面,在第一方面的第二种可能的实现方式中,所述第一结果通告信息为第二哈希值,所述第二哈希值是所述对端对第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息进行第二哈希运算获得的;
所述至少根据所述第一结果通告信息,确定所述对端是否存在所述待发现服务包括:对所述待发现服务的服务标识信息进行第二哈希运算,获取所述待发现服务对应的第二哈希值;如果所述待发现服务对应的第二哈希值存在于所述第一查询响应消息中,确定所述对端存在所述待发现服务。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述第二哈希运算的位数长度长于所述第一哈希运算的位数长度。
结合第一方面,在第一方面的第四种可能的实现方式中,所述第一结果通告信息为第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息;
所述至少根据所述第一结果通告信息,确定所述对端是否存在所述待发现服务包括:如果所述待发现服务的服务标识信息存在于所述第一查询响应消息中,确定所述对端存在所述待发现服务。
第二方面提供一种服务信息发现方法,包括:
接收第一查询请求消息,所述第一查询请求消息携带有第一哈希值,所述第一哈希值是发送所述第一查询请求消息的对端对待发现服务的服务标识信息进行第一哈希运算获得的;
发送第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,以使所述对端至少根据所述第一结果通告信息确定本端是否存在所述待发现服务,所述第一结果通告信息用于标识本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务。
结合第二方面,在第二方面的第一种可能的实现方式中,所述发送第一查询响应消息包括:根据所述第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务;如果确定出本端存在第一哈希运算的哈希值为所述第一哈希值的服务,将存在指示信息作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端,所述存在指示信息用于标识本端存在第一哈希运算的哈希值为所述第一哈希值的服务。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述方法还包括:接收所述对端根据所述存在指示信息发送的第二查询请求消息,所述第二查询请求消息携带有所述待发现服务的服务标识信息;向所述对端发送第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,以使所述对端根据所述第二结果通告信息确定本端是否存在所述待发现服务,所述第二结果通告信息用于标识本端是否存在所述待发现服务。
结合第二方面,在第二方面的第三种可能的实现方式中,所述发送第一查询响应消息包括:根据所述第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务;如果确定出本端存在第一哈希运算的哈希值为所述第一哈希值的服务,获取第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,所述第二哈希值是对所述第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息进行第二哈希运算获得的;将所述第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述第二哈希运算的位数长度长于所述第一哈希运算的位数长度。
结合第二方面,在第二方面的第五种可能的实现方式中,所述发送第一查询响应消息包括:根据所述第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务;如果确定出本端存在第一哈希运算的哈希值为所述第一哈希值的服务,将第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息,作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端。
第三方面提供一种服务信息发现方法,包括:
接收服务信息指示消息,所述服务信息指示消息携带有哈希值指示信息,所述哈希值指示信息用于标识由发送所述服务信息指示消息的对端存在的服务的服务标识信息获得的哈希值;
至少根据所述哈希值指示信息,确定所述对端是否存在本端需要发现的服务。
结合第三方面,在第三方面的第一种可能的实现方式中,所述服务信息指示消息携带所述哈希值指示信息的方式包括:所述服务信息指示消息包括位表和位表长度,所述位表中由所述对端存在的服务的服务标识信息获得的哈希值对应的位置被置为1,所述位表长度是根据所述对端存在的服务的数量确定的。
结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述至少根据所述哈希值指示信息,确定所述对端是否存在本端需要发现的服务包括:获取本端需要发现的服务对应的第一哈希值,所述第一哈希值是对本端需要发现的服务的服务标识信息进行第一哈希运算获得的;至少根据所述第一哈希值是否存在于所述哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务。
结合第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述至少根据所述第一哈希值是否存在于所述哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务包括:如果所述第一哈希值存在于所述哈希值指示信息所标识的哈希值中,,向所述对端发送第一查询请求消息,所述第一查询请求消息携带有本端需要发现的服务的服务标识信息;接收所述对端发送的第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识所述对端是否存在本端需要发现的服务;如果所述第一结果通告信息标识所述对端存在本端需要发现的服务,确定所述对端存在本端需要发现的服务。
结合第三方面的第二种可能的实现方式,在第三方面的第四种可能的实现方式中,所述至少根据所述第一哈希值是否存在于所述哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务包括:如果所述第一哈希值存在于所述哈希值指示信息所标识的哈希值中,,向所述对端发送第二查询请求消息,所述第二查询请求消息携带有本端需要发现的服务对应的第二哈希值和所述第一哈希值,所述本端需要发现的服务对应的第二哈希值是对本端需要发现的服务的服务标识信息进行第二哈希运算获得的;接收所述对端发送的第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识所述对端的第一哈希运算的哈希值为所述第一哈希值的服务中,是否存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务;如果所述第二结果通告信息标识所述对端的第一哈希运算的哈希值为所述第一哈希值的服务中,存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务,则确定所述对端存在本端需要发现的服务。
第四方面提供一种服务信息发现方法,包括:
获取本端存在的服务对应的哈希值,所述哈希值是对本端存在的服务的服务标识信息进行第一哈希运算获得的;
广播服务信息指示消息,所述服务信息指示消息携带有哈希值指示信息,以使接收到所述服务信息指示消息的对端至少根据所述哈希值指示信息确定本端是否存在所述对端需要发现的服务,所述哈希值指示信息用于标识本端存在的服务对应的哈希值。
结合第四方面,在第四方面的第一种可能的实现方式中,所述广播服务信息指示消息包括:根据本端存在的服务的数量,确定位表长度;在所述服务信息指示消息中封装位表和所述位表长度,并将所述位表中本端存在的服务对应的哈希值所对应的位置置为1,然后广播所述服务信息指示消息。
结合第四方面或第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,在广播所述服务信息指示消息之后还包括:接收所述对端发送的第一查询请求消息,所述第一查询请求消息携带有所述对端需要发现的服务的服务标识信息;根据所述对端需要发现的服务的服务标识信息,向所述对端发送第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识本端是否存在所述对端需要发现的服务,以使所述对端至少根据所述第一结果通告信息确定本端是否存在所述对端需要发现的服务。
结合第四方面或第四方面的第一种可能的实现方式,在第四方面的第三种可能的实现方式中,在广播所述服务信息指示消息之后还包括:接收所述对端发送的第二查询请求消息,所述第二查询请求消息携带有所述对端需要发现的服务对应的第一哈希值和所述对端需要发现的服务对应的第二哈希值,所述对端需要发现的服务对应的第一哈希值和第二哈希值分别是对所述对端需要发现的服务的服务标识信息进行第一哈希运算和第二哈希运算获得的;根据所述第一哈希值和所述第二哈希值,向所述对端发送第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识本端的第一哈希运算的哈希值为所述第一哈希值的服务中,是否存在第二哈希运算的哈希值与所述第二哈希值相同的服务,以使所述对端根据所述第二结果通告信息确定本端是否存在所述对端需要发现的服务。
第五方面提供一种服务信息发现设备,包括:
发送单元,用于发送第一查询请求消息,所述第一查询请求消息携带有第一哈希值,所述第一哈希值是对待发现服务的服务标识信息进行第一哈希运算获得的;
接收单元,用于接收对端发送的第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识所述对端是否存在第一哈希运算的哈希值为所述第一哈希值的服务;
发现处理单元,用于至少根据所述第一结果通告信息,确定所述对端是否存在所述待发现服务。
结合第五方面,在第五方面的第一种可能的实现方式中,所述第一结果通告信息为用于指示所述对端存在第一哈希运算的哈希值为所述第一哈希值的服务的存在指示信息;
所述发现处理单元包括:
发送模块,用于根据所述存在指示信息,向所述对端发送第二查询请求消息,所述第二查询请求消息携带有所述待发现服务的服务标识信息;
接收模块,用于接收所述对端返回的第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识所述对端是否存在所述待发现服务;
第一确定模块,用于在所述第二结果通告信息标识所述对端存在所述待发现服务时,确定所述对端存在所述待发现服务。
结合第五方面,在第五方面的第二种可能的实现方式中,所述第一结果通告信息为第二哈希值,所述第二哈希值是所述对端对第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息进行第二哈希运算获得的;
所述发现处理单元包括:
获取模块,用于对所述待发现服务的服务标识信息进行第二哈希运算,获取所述待发现服务对应的第二哈希值;
第三确定模块,用于在所述待发现服务对应的第二哈希值存在于所述第一查询响应消息中时,确定所述对端存在所述待发现服务。
结合第五方面的第二种可能的实现方式,在第五方面的第三种可能的实现方式中,所述第二哈希运算的位数长度长于所述第一哈希运算的位数长度。
结合第五方面,在第五方面的第四种可能的实现方式中,所述第一结果通告信息为第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息;
所述发现处理单元包括:
第四确定模块,用于在所述待发现服务的服务标识信息存在于所述第一查询响应消息中时,确定所述对端存在所述待发现服务。
第六方面提供一种服务信息提供设备,包括:
第一接收单元,用于接收第一查询请求消息,所述第一查询请求消息携带有第一哈希值,所述第一哈希值是发送所述第一查询请求消息的对端对待发现服务的服务标识信息进行第一哈希运算获得的;
第一发送单元,用于发送第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,以使所述对端至少根据所述第一结果通告信息确定本端是否存在所述待发现服务,所述第一结果通告信息用于标识本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务。
结合第六方面,在第六方面的第一种可能的实现方式中,所述第一发送单元包括:
第一确定模块,用于根据所述第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务;
第一发送模块,用于在所述第一确定模块确定出本端存在第一哈希运算的哈希值为所述第一哈希值的服务时,将存在指示信息作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端,所述存在指示信息用于标识本端存在第一哈希运算的哈希值为所述第一哈希值的服务。
结合第六方面的第一种可能的实现方式,在第六方面的第二种可能的实现方式中,所述设备还包括:第二接收单元,用于接收所述对端根据所述存在指示信息发送的第二查询请求消息,所述第二查询请求消息携带有所述待发现服务的服务标识信息;
第二发送单元,用于向所述对端发送第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,以使所述对端根据所述第二结果通告信息确定本端是否存在所述待发现服务,所述第二结果通告信息用于标识本端是否存在所述待发现服务。
结合第六方面,在第六方面的第三种可能的实现方式中,所述第一发送单元包括:
第二确定模块,用于根据所述第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务;
获取模块,用于在所述第二确定模块确定出本端存在第一哈希运算的哈希值为所述第一哈希值的服务时,获取第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,所述第二哈希值是对所述第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息进行第二哈希运算获得的;
第二发送模块,用于将所述第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端。
结合第六方面的第三种可能的实现方式,在第六方面的第四种可能的实现方式中,所述第二哈希运算的位数长度长于所述第一哈希运算的位数长度。
结合第六方面,在第六方面的第五种可能的实现方式中,所述第一发送单元包括:
第三确定模块,用于根据所述第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务;
第三发送模块,用于在所述第三确定模块确定出本端存在第一哈希运算的哈希值为所述第一哈希值的服务时,将第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息,作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端。
第七方面提供一种服务信息发现设备,包括:
接收单元,用于接收服务信息指示消息,所述服务信息指示消息携带有哈希值指示信息,所述哈希值指示信息用于标识由发送所述服务信息指示消息的对端存在的服务的服务标识信息获得的哈希值;
发现处理单元,用于至少根据所述哈希值指示信息,确定所述对端是否存在本端需要发现的服务。
结合第七方面,在第七方面的第一种可能的实现方式中,所述发现处理单元包括:
获取模块,用于获取本端需要发现的服务对应的第一哈希值,所述第一哈希值是对本端需要发现的服务的服务标识信息进行第一哈希运算获得的;
确定模块,用于至少根据所述第一哈希值是否存在于所述哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务。
结合第七方面的第一种可能的实现方式,在第七方面的第二种可能的实现方式中,所述确定模块包括:
第一发送子模块,用于在所述第一哈希值存在于所述哈希值指示信息所标识的哈希值中时,向所述对端发送第一查询请求消息,所述第一查询请求消息携带有本端需要发现的服务的服务标识信息;
第一接收子模块,用于接收所述对端发送的第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识所述对端是否存在本端需要发现的服务;
第一确定子模块,用于在所述第一结果通告信息标识所述对端存在本端需要发现的服务时,确定所述对端存在本端需要发现的服务。
结合第七方面的第一种可能的实现方式,在第七方面的第三种可能的实现方式中,所述确定模块包括:
第二发送子模块,用于在所述第一哈希值存在于所述哈希值指示信息所标识的哈希值中时,向所述对端发送第二查询请求消息,所述第二查询请求消息携带有本端需要发现的服务对应的第二哈希值和所述第一哈希值,所述本端需要发现的服务对应的第二哈希值是对本端需要发现的服务的服务标识信息进行第二哈希运算获得的;
第二接收子模块,用于接收所述对端发送的第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识所述对端的第一哈希运算的哈希值为所述第一哈希值的服务中,是否存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务;
第二确定子模块,用于在所述第二结果通告信息标识所述对端的第一哈希运算的哈希值为所述第一哈希值的服务中,存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务时,确定所述对端存在本端需要发现的服务。
第八方面提供一种服务信息提供设备,包括:
获取单元,用于获取本端存在的服务对应的哈希值,所述哈希值是对本端存在的服务的服务标识信息进行第一哈希运算获得的;
广播单元,用于广播服务信息指示消息,所述服务信息指示消息携带有哈希值指示信息,以使接收到所述服务信息指示消息的对端至少根据所述哈希值指示信息确定本端是否存在所述对端需要发现的服务,所述哈希值指示信息用于标识本端存在的服务对应的哈希值。
结合第八方面,在第八方面的第一种可能的实现方式中,所述广播单元包括:
确定模块,用于根据本端存在的服务的数量,确定位表长度;
设置广播模块,用于在所述服务信息指示消息中封装位表和所述位表长度,并将所述位表中本端存在的服务对应的哈希值所对应的位置置为1,然后广播所述服务信息指示消息。
结合第八方面或第八方面的第一种可能的实现方式,在第八方面的第二种可能的实现方式中,所述设备还包括:
第一接收单元,用于接收所述对端发送的第一查询请求消息,所述第一查询请求消息携带有所述对端需要发现的服务的服务标识信息;
第一发送单元,用于根据所述对端需要发现的服务的服务标识信息,向所述对端发送第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识本端是否存在所述对端需要发现的服务,以使所述对端至少根据所述第一结果通告信息确定本端是否存在所述对端需要发现的服务。
结合第八方面或第八方面的第一种可能的实现方式,在第八方面的第三种可能的实现方式中,所述设备还包括:
第二接收单元,用于接收所述对端发送的第二查询请求消息,所述第二查询请求消息携带有所述对端需要发现的服务对应的第一哈希值和所述对端需要发现的服务对应的第二哈希值,所述对端需要发现的服务对应的第一哈希值和第二哈希值分别是对所述对端需要发现的服务的服务标识信息进行第一哈希运算和第二哈希运算获得的;
第二发送单元,用于根据所述第一哈希值和所述第二哈希值,向所述对端发送第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识本端的第一哈希运算的哈希值为所述第一哈希值的服务中,是否存在第二哈希运算的哈希值与所述第二哈希值相同的服务,以使所述对端根据所述第二结果通告信息确定本端是否存在所述对端需要发现的服务。
在上述技术方案中,在发现服务过程中并不直接使用服务的完整的服务标识信息,而是使用由服务的服务标识信息获得的哈希值来标识需要发现的服务或者所能提供的服务,由于哈希值的长度远小于服务的完整的服务标识信息,减小了服务发现过程中的查询请求消息或服务信息指示消息的长度,减小了这些消息对信道资源的占用,有利于提高信道资源的利用率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在现有WiFi网络中,因为周边设备并不一定有自己需要的服务,很多情况下,查询请求消息是浪费掉的,而且这些查询请求消息又携带了完整的服务标识信息,这些服务标识信息一般会很长,所以白白占用了宝贵的信道资源,导致了信道资源的浪费,降低了信道资源的使用效率。或者,因为周边设备并不一定有需要自己所提供服务的设备,很多情况下,广播的服务信息指示消息是浪费掉的,而且这些服务信息指示消息又携带了完整的服务标识信息,这些服务标识信息一般会很长,所以白白占用了宝贵的信道资源,导致了信道资源的浪费,降低了信道资源的使用效率。针对现有技术存在的信道资源存在浪费、使用效率较低的问题,本发明以下实施例给出了不同的解决方法。
图1为本发明一实施例提供的服务信息发现方法的流程图。如图1所示,本实施例的方法包括:
步骤101、发送第一查询请求消息,该第一查询请求消息携带有第一哈希值,所述第一哈希值是对待发现服务的服务标识信息进行第一哈希运算获得的。
步骤102、接收对端发送的第一查询响应消息,该第一查询响应消息携带有第一结果通告信息,该第一结果通告信息用于标识对端是否存在第一哈希运算的哈希值为第一哈希值的服务。
步骤103、至少根据第一结果通告信息,确定对端是否存在上述待发现服务。
在本实施例中,本端主动发送查询请求消息并携带由待发现服务的服务标识信息进行第一哈希运算获得的第一哈希值,主动发现需要的服务。这里将本端需要发现的服务称为待发现服务。本端可以是一个STA。对端可以是一个AP或另一个STA。为了与后面再次发送的查询请求消息相区分,将这里的查询请求消息称为第一查询请求消息。
在本实施例中,所述服务是指一个AP或STA提供给另外一个STA的一个功能或者信息。每个服务都有自己唯一的标识,称为服务标识信息,服务标识信息可以唯一标识一个服务。一个服务的服务标识信息主要可以包括服务的名称,除此之外,还可以包括协议名,或者版本号,或者包括特定信息,例如指示是双人游戏或者多人游戏的信息,或者是某个标识(Identity,简称为ID)等。例如,一个AP能提供IP连接服务,该服务由通用即插即用(Universal Plug and Play,简称为UPnP)协议命名为:WANIPConnection。又例如,一个打印机,它自己带有一个AP,这个AP指示该打印机提供打印服务,该服务由UPnP协议命名为:PrintBasic。除了UPnP协议,还可以有零配置联网(Bonjour)等其他协议对所涉及的服务的名称进行定义。Bonjour能够自动发现IP网络上的电脑、设备和服务。再例如,有些服务是提供一个游戏的连接,这个服务的名称可以采用该游戏的名字,例如提供游戏Game1的连接功能的服务的名字可以叫做Game1等。
通常,服务的服务标识信息是比较长的,如果直接在第一查询请求消息中携带待发现服务的服务标识信息,就会导致第一查询请求消息较大,从而导致第一查询请求消息占用较多的信道资源,造成信道资源浪费。在本实施例中,本端通过对待发现服务的服务标识信息进行第一哈希(英文为hash)运算,获得第一哈希值。哈希,也叫散列,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值;这种转换是一种压缩映射,也就是说,散列值的长度通常远小于输入的长度。简单的说,哈希运算就是一种将任意长度的输入压缩到某一固定长度的输出的函数。由此可见,本端通过将待发现服务的服务标识信息作为输入,通过散列算法,将其变换成固定长度的输出,即第一哈希值,第一哈希值的长度小于待发现服务的服务标识信息的长度,由此可见,在第一查询请求消息中携带第一哈希值相比携带完整的服务标识信息,可以节约信道资源,提高信道资源的使用效率。
在此说明,可以预先设定哈希运算结果的位数(即长度)。根据哈希运算结果长度的不同可以将哈希运算划分为多种类型,例如包括16位的哈希运算、32位的哈希运算、128位的哈希运算等。在本实施例中,只要本端与对端确定使用相同位数的哈希运算即可,对具体位数的哈希运算不做限定。
可选的,本端发送第一查询请求消息,可以是以广播的方式进行发送,例如本端广播探测请求(probe request)消息,对端可以返回一个单播或者广播的探测响应(proberesponse)消息,或者对端可以什么都不返回。
可选的,本端发送的第一查询请求消息,也可以是以单播的方式进行发送,例如本端可以发送一个通用广告服务(Generic Advertisement Service,简称为GAS)初始请求(GAS initial request)消息,对端可以返回一个单播或者广播的响应消息,例如GAS初始应答(GAS initial response)消息。
其中,第一查询请求消息并不限于GAS initial request消息或者proberequest消息,相应的,第一查询响应消息也并不限于GAS initial response消息或者proberesponse消息。
本端发送第一查询请求消息后,对端会收到第一查询请求消息。对对端来说,根据不同的具体情况,返回的内容会有所不同。如果对端存在第一哈希运算的哈希值为第一哈希值的服务,则对端可以返回存在第一哈希运算的哈希值为第一哈希值的服务的响应消息,如果对端不存在第一哈希运算的哈希值为第一哈希值的服务,则对端可以返回不存在第一哈希运算的哈希值为第一哈希值的服务的响应消息,在该情况下,也就意味着对端不存在本端待发现的服务。基于此,对端在确定出是否存在第一哈希运算的哈希值为第一哈希值的服务后,向本端返回第一查询响应消息并在其中携带第一结果通告信息,该第一结果通告信息用于标识对端是否存在第一哈希运算的哈希值为第一哈希值的服务。
本端接收对端发送的第一查询响应消息,从第一查询响应消息中获取第一结果通告信息;然后至少根据该第一结果通告信息,确定对端是否存在本端的待发现服务。
在实际应用中,很多STA可能会持续地向周边设备发送查询请求消息,以试图发现周边设备是否有自己需要发现的服务。但是,在很多情况下,周边设备可能没有自己需要发现的服务,那么这些查询请求消息就会被浪费掉,而本实施例的查询请求消息通过携带相对较短的哈希值,把很多情况下会被浪费掉的查询请求消息变短了,因此有助于减少对信道资源的浪费,进而有利于提高无线资源的利用率。
综上所述,在本实施例中,本端主动发送查询请求消息,发现周边设备是否存在自己需要发现的服务,在该过程中,通过在查询请求消息中携带相对较短的服务标识信息的哈希值,而不是直接携带待发现服务的服务标识信息,减小了查询请求消息的长度,有利于减小查询请求消息对信道资源的占用,有利于节约信道资源;另一方面由于减小查询请求消息的长度,在查询请求消息被浪费的情况下,相当于将会被浪费掉的查询请求消息变短了,因此也有助于减少对信道资源的浪费,也有利于提高无线资源的利用率。
在以下实施方式中,假设本端需要一个服务,该服务的服务标识信息为“bonjour:printer._ipp._tcp.local”。这个服务的服务标识信息只是举例,bonjour是对应后面的服务名称printer._ipp._tcp.local的协议字段。上述服务标识信息中的“bonjour”,只是为了区分命名使用的协议,实际应用中,也可以不带这样的关键词。
本端自己先计算出这个服务的服务标识信息对应的哈希值是多少。计算的方法可以是把服务的服务标识信息当做输入,经过预定义的第一哈希计算函数进行计算。哈希结果的位数可以是预先设定的位数,比如16位,32位,128位等,我们可以用H16()表示16位哈希的计算函数,H32()表示32位哈希的计算函数等。在该实施方式中,假设采用16位的哈希运算,16位能表达的最大值是216-1=65535,即能表达0~65535共65536个数值。在这里,本端先计算16位的哈希值。假设H16(“bonjour:printer._ipp._tcp.local”)=25568,25568即为第一哈希值,则本端在给对端的第一查询请求消息中带上25568这个哈希结果。可选的,本端还可以在第一查询请求消息中携带自己计算的是多少位的哈希值,比如在这里带上16,说明是16位的哈希运算。可选的,本端还可以在第一查询请求消息中带上自己要发现多少个服务,例如如果要发现1个服务,则可以携带要发现1个服务的信息。例如,第一查询请求消息携带的信息可以包括:服务(英文为service):16,1,25568;这说明需要发现的服务的哈希算法是16位的,需要发现1个服务,服务的哈希值是25568。
对端收到第一查询请求消息以后,先确定自己是否具有16位哈希运算后哈希值是25568的服务。根据确定结果的不同,对端返回的第一查询响应消息携带的第一结果通告信息所标识的含义也会有所不同,在具体实现上也会有所不同。下面对第一结果通告信息的实现方式进行举例说明。
在一可选实施方式中,对端发现自己确实拥有第一哈希运算的哈希值为第一哈希值(例如25568)的服务,则可以将存在指示信息作为第一结果通告信息,并通过第一查询响应消息返回给本端,例如可以通过第一查询响应消息中的某位携带1。基于此,第一结果通告信息为用于指示对端存在第一哈希运算的哈希值为第一哈希值的服务的存在指示信息。则本端至少根据第一结果通告信息,确定对端是否存在本端的待发现服务的一种实施方式包括:本端直接根据该存在指示信息确定对端存在本端的待发现服务。
由于哈希运算有一个特点是:不同的输入可能会散列成相同的输出。也就是说,哈希值相同,但这两个相同的哈希值各自对应的输入可能会不同。也就是说,两个不同服务的服务标识信息经过相同的哈希运算后,其哈希值有可能是相同的,这样仅通过比较哈希值是否相同作为确定对端是否存在待发现服务的条件,有可能导致发现错误的服务。在第一结果通告信息为存在指示信息的情况下,为了能够发现正确的服务,本端至少根据第一结果通告信息,确定对端是否存在本端的待发现服务的另一种实施方式可以包括以下步骤:
步骤1a、根据存在指示信息,向对端发送第二查询请求消息,该第二查询请求消息携带有待发现服务的服务标识信息。
步骤1b、接收对端返回的第二查询响应消息,该第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识所述对端是否存在所述待发现服务。
步骤1c、如果第二结果通告信息标识对端存在待发现服务,则确定对端存在所述待发现服务;如果第二结果通告信息标识对端不存在待发现服务,则确定对端不存在所述待发现服务。
在该实施方式中,本端知道对端存在第一哈希运算的哈希值为第一哈希值(例如25568)的服务后,可以再通过第二查询请求消息携带待发现服务的完整的服务标识信息,例如bonjour:printer._ipp._tcp.local,再向对端查询一次,以进一步确定对端是否有自己需要发现的服务,可以提高发现需要发现的服务的准确率和成功率。在该实施方式中,本端至少根据第一结果通告信息,确定对端是否存在本端的待发现服务,具体是根据第一结果通告信息和第二结果通告信息,确定对端是否存在本端的待发现服务的。虽然在本实施例中,本端需要进行两个查询过程,但是由于第一查询请求消息的消息长度减小了,减小了大量第一查询请求消息占用的信道资源,而第二查询请求消息的数量是比较少的,总体来看还是可以减小对信道资源的浪费,有利于提高信道资源的利用率。
在一可选实施方式中,对端发现自己不存在第一哈希运算的哈希值为第一哈希值(例如25568)的服务,则可以将不存在指示信息作为第一结果通告信息,并通过第一查询响应消息返回给本端,例如可以通过第一查询响应消息中的某位携带0。在该情况下,本端至少根据第一结果通告信息,确定对端是否存在待发现服务的实施方式包括:本端根据该不存在指示信息,直接确定对端不存在待发现服务。可选的,对端除了回复携带有不存在指示信息的第一查询响应消息之外,也可以不对第一查询请求消息进行回应,这样如果本端在指定的接收时间内没有接收到第一查询响应消息,则也可以直接确定对端不存在所述待发现服务。
在一可选实施方式中,对端收到第一查询请求消息以后,发现自己确实存在第一哈希运算的哈希值是第一哈希值(例如25568)的服务。则对端可以直接把哈希值为25568的服务的服务标识信息作为第一结果通告信息,并通过第一查询响应消息返回给本端。基于此,第一结果通告信息可以为第一哈希运算的哈希值为第一哈希值的服务的服务标识信息,例如“bonjour:printer._ipp._tcp.local”。也就是说,第一查询响应消息携带的是第一哈希运算的哈希值为第一哈希值,例如25568的服务的服务标识信息。基于此,本端至少根据第一结果通告信息,确定对端是否存在待发现服务的实施方式包括:本端确定待发现服务的服务标识信息是否存在于第一查询响应消息中,如果待发现服务的服务标识信息存在于第一查询响应消息中,则确定对端存在所述待发现服务;如果待发现服务的服务标识信息不存在于第一查询响应消息中,则确定对端不存在所述待发现服务。
在此说明,在第一查询响应消息中携带第一哈希运算的哈希值为第一哈希值的服务的服务标识信息的实施方式,可以适用于对端存在的第一哈希运算的哈希值为第一哈希值的服务的数量不多的情况,这里的数量不多可以是指小于预设数量阈值,数量阈值可以根据实际应用情况自行设置。例如,如果对端仅存在一个第一哈希运算的哈希值为第一哈希值的服务,则可以直接将该服务的服务标识信息作为第一结果通告信息封装在第一查询响应消息中返回给本端。
在一可选实施方式中,对端收到第一查询请求消息以后,如果发现自己存在第一哈希运算的哈希值为第一哈希值(例如25568)的服务,则对端可以将第一哈希运算的哈希值为第一哈希值的服务的服务标识信息进行第二哈希运算,获得第二哈希值,这里第一哈希运算和第二哈希运算的位数长度可以是不同的,第二哈希运算的位数长度可以长于第一哈希运算的位数长度。然后,对端把第一哈希运算的哈希值为第一哈希值(例如25568)的服务对应的第二哈希值(例如32位的哈希值127665)作为第一结果通告信息,并通过第一查询响应消息返回给本端。例如,如果第一哈希运算是16位的哈希运算,则第一哈希值是16位的哈希值,则第二哈希运算可以是32位的哈希运算,第二哈希值是32位的哈希值,或者第二哈希运算可以是128位的哈希运算,第二哈希值是128位的哈希值等。基于此,第一结果通告信息可以为第一哈希运算的哈希值为第一哈希值(例如25568)的服务对应的第二哈希值。则,本端至少根据第一结果通告信息,确定对端是否存在待发现服务的一种实施方式包括以下步骤:
步骤2a、对待发现服务的服务标识信息进行第二哈希运算,获取待发现服务对应的第二哈希值。
步骤2b、如果待发现服务对应的第二哈希值存在于第一查询响应消息中,确定对端存在所述待发现服务;如果待发现服务对应的第二哈希值不存在于第一查询响应消息中,确定对端不存在所述待发现服务。
具体的,对端返回的第一查询响应消息携带有第一哈希运算的哈希值为第一哈希值的服务对应的第二哈希值。本端在接收到第一查询响应消息后,可以采用与对端相同的哈希运算,对待发现服务的服务标识信息进行第二哈希运算,获得待发现服务对应的第二哈希值;然后,确定待发现服务对应的第二哈希值是否存在于第一查询响应消息中,如果不存在,则直接确定对端不存在待发现服务;如果存在,则可以直接确定对端存在待发现服务,则可以直接尝试使用该服务。通常,不同输入的两种哈希运算结果均相同的概率是比较小的,所以如果两种类型的哈希运算结果均相同,可以说明这两个服务是相同的服务,通过对待发现服务的服务标识信息进行两种类型的哈希运算,提高了发现正确的待发现服务的准确率。
可选的,虽然不同输入的两种哈希运算结果相同的概率很小,但为了进一步降低本端发现错误服务的概率,本端在确定出待发现服务对应的第二哈希值存在于第一查询响应消息中后,还可以进一步通过携带了待发现服务的完整服务标识信息的消息再次向对端查询,以进一步降低发现错误服务的概率。
基于上述实施例或各实施方式,在一可选实施方式中,如图2所示,本实施例的方法在步骤102之前可以包括:
步骤1011、确定预设的接收时间是否到达,如果确定结果为否,即预设接收时间尚未到达,则执行步骤102;如果确定结果为是,则执行步骤104。
步骤104、确定对端不存在待发现服务。
在该实施方式中,通过设定接收时间,在接收时间内接收对端返回的第一查询响应消息,如果超出预设接收时间,则直接确定对端不存在待发现服务。基于此,本实施方式支持对端在判断出不存在第一哈希运算的哈希值为第一哈希值的服务的情况下不进行响应,可以进一步节约第一查询响应消息占用的信道资源,有利于提高信道资源的利用率。
在此说明,本端向对端查询服务信息时,可能会同时查询多个服务信息,这时本端发送给对端的第一查询请求消息中就可以携带有每个服务标识信息进行第一哈希运算获得的第一哈希值,而对端返回的第一查询响应消息中,则可以根据每个服务标识信息的第一哈希值存在与否的情况,分别进行答复,可能是都存在,也可能是都不存在,也可能是部分存在,部分不存在。对端返回的第一查询响应消息可以是一条,也可以是多条(即可以针对本端查询的每个服务分别返回一条);对端所返回的第一查询响应消息携带的第一结果通告信息可以是第一哈希值是否存在的信息,也可以是存在的第一哈希值对应的服务的服务标识信息,也可以是存在的第一哈希值对应的服务的服务标识信息的第二哈希值,以待本端进一步确定对端是否存在待发现服务,具体可参见上述实施例的描述,在此不再赘述。
图3为本发明又一实施例提供的服务信息发现方法的流程图。如图3所示,本实施例的方法包括:
步骤301、接收第一查询请求消息,该第一查询请求消息携带有第一哈希值,该第一哈希值是发送所述第一查询请求消息的对端对待发现服务的服务标识信息进行第一哈希运算获得的。
步骤302、发送第一查询响应消息,该第一查询响应消息携带有第一结果通告信息,以使对端至少根据第一结果通告信息确定本端是否存在上述待发现服务,第一结果通告信息用于标识本端是否存在第一哈希运算的哈希值为第一哈希值的服务。
在本实施例中,对端可以是STA,本端可以是STA或AP。对端主动发送第一查询请求消息,并在第一查询请求消息中携带由待发现服务的服务标识信息进行第一哈希运算得到的第一哈希值,以标识待发现服务。本端接收对端发送的第一查询请求消息,从第一查询请求消息中获取第一哈希值,然后确定本端是否存在第一哈希运算的哈希值为第一哈希值的服务,并将确定结果作为第一结果通告信息通过第一查询响应消息返回给对端。这样,对端接收到第一结果通告信息后,至少根据第一结果通告信息确定本端是否存在待发现服务。其中,关于对端至少根据第一结果通告信息确定本端是否存在待发现服务的过程可参见图1或图2所示实施例中的描述,区别在于:本实施例的“对端”为图1或图2所示实施例中的“本端”,其他在此不再赘述。
在一可选实施方式中,本端发送第一查询响应消息的实施方式包括以下步骤:
步骤3a、根据第一哈希值,确定本端是否存在第一哈希运算的哈希值为第一哈希值的服务。如果确定结果为是,即确定出本端存在第一哈希运算的哈希值为所述第一哈希值的服务,执行步骤3b;如果确定结果为否,即确定出本端不存在第一哈希运算的哈希值为所述第一哈希值的服务,则执行步骤3c。
步骤3b、将存在指示信息作为第一结果通告信息封装在第一查询响应消息中发送给对端,所述存在指示信息用于标识本端存在第一哈希运算的哈希值为第一哈希值的服务。
步骤3c、将不存在指示信息作为第一结果通告信息封装在第一查询响应消息中发送给对端,所述不存在指示信息用于标识本端不存在第一哈希运算的哈希值为第一哈希值的服务。
在该实施方式中,在第一结果通告信息为存在指示信息的情况下,如图4所示,本实施例的方法在步骤302之后还可以包括:
步骤303、接收对端根据所述存在指示信息发送的第二查询请求消息,所述第二查询请求消息携带有所述待发现服务的服务标识信息。
步骤304、向对端发送第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,以使对端根据第二结果通告信息确定本端是否存在所述待发现服务,所述第二结果通告信息用于标识本端是否存在所述待发现服务。
上述步骤303和步骤304描述的是在第一结果通告信息为存在指示信息的情况下,本端接收对端再次发送的携带所述待发现服务的服务标识信息的查询请求消息,并向对端返回第二查询响应消息并携带是否存在所述待发现服务的信息的过程。
上述过程可参见图1所示实施例中的相应描述,在此不再赘述。
在一可选实施方式中,本端发送第一查询响应消息的实施方式包括:本端根据第一哈希值,确定本端是否存在第一哈希运算的哈希值为第一哈希值的服务;如果确定结果为是,即确定出本端存在第一哈希运算的哈希值为所述第一哈希值的服务,则将第一哈希运算的哈希值为第一哈希值的服务的服务标识信息,作为第一结果通告信息封装在第一查询响应消息中发送给对端。可选的,如果确定结果为否,即确定出本端不存在第一哈希运算的哈希值为所述第一哈希值的服务,则本端可以不进行响应,或者可以返回不存在指示信息等。
在一可选实施方式中,本端发送第一查询响应消息的实施方式包括:
步骤4a、根据第一哈希值,确定本端是否存在第一哈希运算的哈希值为第一哈希值的服务,如果确定结果为是,即确定出本端存在第一哈希运算的哈希值为所述第一哈希值的服务,则执行步骤4b,如果确定结果为否,即确定出本端不存在第一哈希运算的哈希值为所述第一哈希值的服务,则本端可以不进行响应,或者可以返回不存在指示信息等。
步骤4b、获取第一哈希运算的哈希值为第一哈希值的服务对应的第二哈希值,并执行步骤4c。其中,第一哈希运算的哈希值为第一哈希值的服务对应的第二哈希值,是对第一哈希运算的哈希值为第一哈希值的服务的服务标识信息进行第二哈希运算获得的。
步骤4c、将所述第一哈希运算的哈希值为第一哈希值的服务对应的第二哈希值,作为第一结果通告信息封装在第一查询响应消息中发送给对端。
在本实施例方式中,本端将第一哈希值对应的哈希运算称为第一哈希运算;第二哈希运算是与第一哈希运算不同的哈希运算。第一哈希值和第二哈希值的位数长度可以不同,且第二哈希运算的位数长度可以长于第一哈希运算的位数长度。例如,如果第一哈希值为16位,则第二哈希值可以是32位或128位等的哈希值。具体的,本端可以对第一哈希运算的哈希值为第一哈希值的服务的服务标识信息进行第二哈希运算,获得该服务对应的第二哈希值,然后将该服务的第二哈希值作为第一结果通告信息封装在第一查询响应消息中返回给对端。
本实施例提供的方法与上述图1或图2提供的方法相适应,从不同的角度进行了描述,关于本实施例中各操作的详细描述可参见图1或图2所示实施例的描述,在此不再赘述。
在本实施例中,本端与对端相互配合,使得对端可以在查询请求消息中携带相对较短的服务标识信息的哈希值,而不是直接携带待发现服务的服务标识信息,减小了查询请求消息的长度,有利于减小查询请求消息对信道资源的占用,有利于节约信道资源;另一方面由于减小查询请求消息的长度,在查询请求消息被浪费的情况下,相当于将会被浪费掉的查询请求消息变短了,因此也有助于减少对信道资源的浪费,也有利于提高无线资源的利用率。
图5为本发明又一实施例提供的服务信息发现方法的流程图。如图5所示,本实施例的方法包括:
步骤501、接收服务信息指示消息,该服务信息指示消息携带有哈希值指示信息,该哈希值指示信息用于标识由发送所述服务信息指示消息的对端存在的服务的服务标识信息获得的哈希值。
步骤502、至少根据哈希值指示信息,确定对端是否存在本端需要发现的服务。
在本实施例中,对端可以是AP或STA,本端可以是STA。对端主动广播服务信息指示消息,通过服务信息指示消息向周边设备通告自己所支持的服务。具体的,对端并不是像现有技术那样直接在服务信息指示消息中携带自己所支持的各服务的服务标识信息,而是携带哈希值指示信息,用于标识由自己所支持的各服务的服务标识信息进行哈希运算获得的哈希值。根据哈希运算的特性可知,哈希值的长度比服务的服务标识信息要短,相应的,标识哈希值的哈希值指示信息也会小于所有服务的服务标识信息的长度之和。而本端接收到对端的服务信息指示消息后,从中获取哈希值指示信息,根据该哈希值指示信息可以获知对端所支持的服务,进而可以确定对端是否存在本端需要发现的服务。
在一可选实施方式中,对端通过服务信息指示消息携带哈希值指示信息的方式包括:服务信息指示消息包括位表和位表长度,该位表中由对端存在的服务的服务标识信息获得的哈希值对应的位置被置为1,而该位表长度是根据对端存在的服务的数量确定的。
在该实施方式中,对端广播的服务信息指示消息里面,并不直接携带对端所支持的服务的服务标识信息,而仅仅是携带一个位表,这个位表里面的每一位用于标识对端所存在的服务的哈希值。当某位为1的时候,表示对端有哈希值为该位对应数字的服务,例如,假设位表中的第5位为1,则说明对端有哈希值为5的服务。当然,如果某位为0,则说明对端没有哈希值为该位对应的数字的服务,例如,假设位表中的第3位为0,则说明对端没有哈希值为3的服务。
假设对端有两个服务,分别为“UPnP:Printer”和“UPnP:Scanner”。这两个服务经过8位的哈希运算后,一个得到的哈希值是2,一个得到的哈希值是5,于是,对端就在自己广播的服务信息指示消息中,携带一个位表,该位表的第2位和第5位被置为1。在此说明,8位哈希运算的结果在0~255之间,共256个数值,基于此,位表长度只需256位,该位表的起始位可以为第0位,接着是第1位,第2位,以此类推,直到第255位。
在上面的例子里,对端使用的位表是256位,实际情况下,位表长度可以灵活变动。比如当对端所存在的服务不多的时候,位表可以小一点,比如只有64位,或128位等,当然,对应的哈希运算类型也会不同,例如对应64位的位表使用的可以是6位的哈希运算,运算结果是在0~63之间,共64个数,对应128位的位表使用的可以是7位的哈希运算,运算结果是在0~127之间,共128个数。基于此,对端在广播的服务信息指示消息中,只需指示自己使用的是多少位的位表(即位表长度)即可。可选的,对端使用的位表长度也可以是预先确定的固定长度。
在该实施方式中,对端通过在服务信息指示消息中携带位表和位表长度,使得位表长度灵活可变,能够适应对端所支持服务数量的变化,具有较强的灵活性,且通过主动广播服务信息指示消息,有利于周边设备及时发现自己所需的服务,并且位表长度相对于所有服务的服务标识信息的长度之和要小很多,减小了服务信息指示消息,进而减小了服务信息指示消息占用的信道资源,有利于提高信道资源的利用率,另外,在对端不存在周边设备所需的服务的情况下,由于对端广播的服务信息指示消息减小了,相当于减小了会被浪费的服务信息指示消息,进而减小了这些会被浪费的服务信息指示消息所占用的信道资源,有利于节约信道资源,也有利于提高信道资源的利用率。
基于上述,在一可选实施方式中,本端至少根据哈希值指示信息,确定对端是否存在本端需要发现的服务的实施方式包括:获得本端需要发现的服务对应的第一哈希值,该第一哈希值是对本端需要发现的服务的服务标识信息进行第一哈希运算获得的;至少根据第一哈希值是否存在于哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务。
在一可选实施方式中,至少根据第一哈希值是否存在于哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务包括:如果第一哈希值存在于哈希值指示信息所标识的哈希值中,则本端可以直接确定所述对端存在本端需要发现的服务,本端可以直接尝试使用该服务。
在一可选实施方式中,至少根据第一哈希值是否存在于哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务包括:如果第一哈希值不存在于哈希值指示信息所标识的哈希值中,则本端可以确定所述对端不存在本端需要发现的服务。
在一可选实施方式中,至少根据第一哈希值是否存在于哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务包括:如果第一哈希值存在于哈希值指示信息所标识的哈希值中,则本端可以向对端发送第一查询请求消息,该第一查询请求消息携带有本端需要发现的服务的服务标识信息;然后接收对端发送的第一查询响应消息,该第一查询响应消息携带有第一结果通告信息,第一结果通告信息用于标识对端是否存在本端需要发现的服务;如果第一结果通告信息标识对端存在本端需要发现的服务,则本端确定对端存在本端需要发现的服务;如果第一结果通告信息标识对端不存在本端需要发现的服务,则本端确定对端不存在本端需要发现的服务。在该实施方式中,至少根据第一哈希值是否存在于哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务,具体是指根据第一哈希值是否存在于哈希值指示信息所标识的哈希值中以及第一结果通告信息,确定所述对端是否存在本端需要发现的服务的。
在该实施方式中,本端在确定出第一哈希值存在于哈希值指示信息所标识的哈希值中之后,可以初步确定对端可能存在本端需要发现的服务,本端可以进一步向对端发送查询请求消息,并携带本端所需服务的服务标识信息以进一步确定对端是否存在本端需要发现的服务,提高了发现需要发现的服务的准确性和成功率。为了便于与后面可选实施方式中的查询请求消息相区分,这里的查询请求消息称为第一查询请求消息。
在一可选实施方式中,至少根据第一哈希值是否存在于哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务包括:如果第一哈希值存在于哈希值指示信息所标识的哈希值中,则本端可以向对端发送第二查询请求消息,该第二查询请求消息携带有本端需要发现的服务对应的第二哈希值和第一哈希值;接收对端发送的第二查询响应消息,该第二查询响应消息携带有第二结果通告信息,第二结果通告信息用于标识对端的第一哈希运算的哈希值为第一哈希值的服务中,是否存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务;如果第二结果通告信息标识对端的第一哈希运算的哈希值为第一哈希值的服务中,存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务,则确定对端存在本端需要发现的服务;如果第二结果通告信息标识对端的第一哈希运算的哈希值为第一哈希值的服务中,不存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务,则确定对端不存在本端需要发现的服务。在该实施方式中,至少根据第一哈希值是否存在于哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务,具体是指根据第一哈希值是否存在于哈希值指示信息所标识的哈希值中以及第二结果通告信息,确定所述对端是否存在本端需要发现的服务的。
在该实施方式中,将获得第一哈希值使用的哈希运算称为第一哈希运算,本端在确定出第一哈希值存在于哈希值指示信息所标识的哈希值中之后,可以初步确定对端可能存在本端需要发现的服务,为了提高发现需要发现的服务的准确性,可以进一步采用与第一哈希运算不同的第二哈希运算对本端需要发现的服务的服务标识信息进行哈希运算,获得本端需要发现的服务对应的第二哈希值,然后再次向对端发送第二查询请求消息,并携带本端需要发现的服务对应的第二哈希值和第一哈希值;这样对端接收到第二查询请求消息后,首先确定所存在的第一哈希运算的哈希值与第一哈希值相同的服务,然后获取这些服务对应的第二哈希值,确定这些服务对应的第二哈希值是否与本端需要发现的服务对应的第二哈希值相同,然后将确定结果作为第二结果通告信息返回给本端,使得本端可以根据第二结果通告信息确定对端是否存在本端需要发现的服务。其中,第一哈希值和第二哈希值的位数长度可以不同,且第二哈希运算的位数长度可以长于第一哈希运算的位数长度。例如,如果第一哈希运算为16位哈希运算,则第二哈希运算可以是32位或128位等的哈希运算。
可选的,在第二结果通告信息标识对端的第一哈希运算的哈希值为第一哈希值的服务中,存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务的情况下,第二结果通告信息可以为第一哈希运算的哈希值为第一哈希值的服务中,第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务的服务标识信息。
图6为本发明又一实施例提供的服务信息发现方法的流程图。如图6所示,本实施例的方法包括:
步骤601、获取本端存在的服务对应的哈希值,所述哈希值是对本端存在的服务的服务标识信息进行第一哈希运算获得的。
步骤602、广播服务信息指示消息,所述服务信息指示消息携带有哈希值指示信息,以使接收到所述服务信息指示消息的对端至少根据所述哈希值指示信息确定本端是否存在对端需要发现的服务,所述哈希值指示信息用于标识本端存在的服务对应的哈希值。
在一可选实施方式中,广播服务信息指示消息的实施方式包括:根据本端存在的服务的数量,确定位表长度;在服务信息指示消息中封装位表和该位表长度,并将位表中本端存在的服务对应的哈希值所对应的位置置为1,然后广播服务信息指示消息。
在一可选实施方式中,在步骤602之后还包括:接收对端发送的第一查询请求消息,该第一查询请求消息携带有对端需要发现的服务的服务标识信息;根据对端需要发现的服务的服务标识信息,向对端发送第一查询响应消息,该第一查询响应消息携带有第一结果通告信息,第一结果通告信息用于标识本端是否存在对端需要发现的服务,以使对端至少根据第一结果通告信息确定本端是否存在对端需要发现的服务。
在一可选实施方式中,在步骤602之后还包括:接收对端发送的第二查询请求消息,第二查询请求消息携带有对端需要发现的服务对应的第一哈希值和对端需要发现的服务对应的第二哈希值;根据对端需要发现的服务对应的第一哈希值和第二哈希值,向对端发送第二查询响应消息,第二查询响应消息携带有第二结果通告信息,第二结果通告信息用于标识本端的第一哈希运算的哈希值为第一哈希值的服务中,是否存在第二哈希运算的哈希值与对端需要发现的服务对应的第二哈希值相同的服务,以使对端根据第二结果通告信息确定本端是否存在对端需要发现的服务。第一哈希值和第二哈希值的位数长度可以不同,且第二哈希运算的位数长度可以长于第一哈希运算的位数长度。例如,如果第一哈希运算为16位哈希运算,则第二哈希运算可以是32位或128位等的哈希运算。在该实施方式中,对端至少根据第一结果通告信息确定本端是否存在对端需要发现的服务,具体是指对端根据第一结果通告信息和第二结果通告信息,确定本端是否存在对端需要发现的服务的。
本实施例与图5所示实施例相适应,区别在于:本实施例中的“对端”和“本端”,分别相当于图5所示实施例中的“本端”和“对端”,其他描述可参见图5所示实施例,在此不再赘述。
在本实施例中,本端与对端相互配合,通过在服务信息指示消息中携带位表和位表长度,使得位表长度灵活可变,能够适应对端所支持服务数量的变化,具有较强的灵活性,且通过主动广播服务信息指示消息,有利于周边设备及时发现自己需要发现的服务,并且位表长度相对于所有服务的服务标识信息的长度之和要小很多,减小了服务信息指示消息,进而减小了服务信息指示消息占用的信道资源,有利于提高信道资源的利用率,另外,在本端不存在周边设备所需的服务的情况下,由于本端广播的服务信息指示消息减小了,相当于减小了会被浪费的服务信息指示消息,进而减小了这些会被浪费的服务信息指示消息所占用的信道资源,有利于节约信道资源,也有利于提高信道资源的利用率。
图7为本发明一实施例提供的服务信息发现设备的结构示意图。如图7所示,本实施例的设备包括:发送单元71、接收单元72和发现处理单元73。
发送单元71,用于发送第一查询请求消息,所述第一查询请求消息携带有第一哈希值,所述第一哈希值是对待发现服务的服务标识信息进行第一哈希运算获得的。
接收单元72,用于接收对端发送的第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识所述对端是否存在第一哈希运算的哈希值为所述第一哈希值的服务。接收单元72与发送单元71连接,用于在发送单元71发送第一查询请求消息之后,接收对端发送的第一查询响应消息。
发现处理单元73,与接收单元72连接,用于至少根据接收单元72接收的第一结果通告信息,确定对端是否存在所述待发现服务。
在一可选实施方式中,第一结果通告信息为用于指示所述对端存在第一哈希运算的哈希值为所述第一哈希值的服务的存在指示信息。
基于此,如图8所示,发现处理单元73的一种实现结构包括:发送模块731、接收模块732和第一确定模块733。
发送模块731,与接收单元72连接,用于根据接收单元72接收的存在指示信息,向所述对端发送第二查询请求消息,所述第二查询请求消息携带有所述待发现服务的服务标识信息。
接收模块732,用于接收所述对端返回的第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识所述对端是否存在所述待发现服务。接收模块732与发送模块731连接,用于在发送模块731发送第二查询请求消息之后,接收所述对端返回的第二查询响应消息。
第一确定模块733,与接收模块732连接,用于在所述第二结果通告信息标识所述对端存在所述待发现服务时,确定所述对端存在所述待发现服务,或者在所述第二结果通告信息标识所述对端不存在所述待发现服务时,确定所述对端不存在所述待发现服务。
在一可选实施方式中,所述第一结果通告信息为用于指示所述对端不存在第一哈希运算的哈希值为所述第一哈希值的服务的不存在指示信息。
基于此,如图8所示,发现处理单元73的另一种实现结构包括:第二确定模块734。第二确定模块734,与接收单元72连接,用于根据接收单元72接收的不存在指示信息,确定所述对端不存在所述待发现服务。
在一可选实施方式中,所述第一结果通告信息为第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值。所述第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,是对第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息进行第二哈希运算获得的。第一哈希值和第二哈希值的位数长度可以不同,且第二哈希运算的位数长度可以长于第一哈希运算的位数长度。例如,如果第一哈希运算为16位哈希运算,则第二哈希运算可以是32位或128位等的哈希运算。
基于此,如图8所示,发现处理单元73的又一种实现结构包括:获取模块735和第三确定模块736。
获取模块735,用于对所述待发现服务的服务标识信息进行第二哈希运算,获取所述待发现服务对应的第二哈希值。
第三确定模块736,与获取模块735和接收单元72连接,用于在所述待发现服务对应的第二哈希值存在于所述第一查询响应消息中时,确定所述对端存在所述待发现服务,或者在所述待发现服务对应的第二哈希值不存在于所述第一查询响应消息中时,确定所述对端不存在所述待发现服务。
可选的,所述第一哈希运算可以为16位的哈希运算,所述第二哈希运算可以为32位的哈希运算。
在一可选实施方式中,所述第一结果通告信息为第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息。
基于此,如图8所示,发现处理单元73的又一种实现结构包括:第四确定模块737。第四确定模块737,与接收单元72连接,用于在所述待发现服务的服务标识信息存在于所述第一查询响应消息中时,确定所述对端存在所述待发现服务,或者在所述待发现服务的服务标识信息不存在于所述第一查询响应消息中时,确定所述对端不存在所述待发现服务。
本实施例提供的服务信息发现设备可以是STA,但不限于此。
本实施例提供的服务信息发现设备的各功能单元或模块可用于执行图1或图2所示方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的服务信息发现设备,主动发送查询请求消息,发现周边设备是否存在自己需要发现的服务,在该过程中,通过在查询请求消息中携带相对较短的服务标识信息的哈希值,而不是直接携带待发现服务的服务标识信息,减小了查询请求消息的长度,有利于减小查询请求消息对信道资源的占用,有利于节约信道资源;另一方面由于减小查询请求消息的长度,在查询请求消息被浪费的情况下,相当于将会被浪费掉的查询请求消息变短了,因此也有助于减少对信道资源的浪费,也有利于提高无线资源的利用率。
图9为本发明又一实施例提供的服务信息发现设备的结构示意图。如图9所示,本实施例的设备包括:通信接口91、处理器92和存储器93。
通信接口91,用于发送第一查询请求消息,所述第一查询请求消息携带有第一哈希值,所述第一哈希值是对待发现服务的服务标识信息进行第一哈希运算获得的;以及用于接收对端发送的第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识所述对端是否存在第一哈希运算的哈希值为所述第一哈希值的服务。
存储器93,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器93可以包含高速RAM存储器,也可以还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器92,用于执行存储器93存放的程序,以用于至少根据通信接口91接收的第一结果通告信息,确定对端是否存在所述待发现服务。其中,处理器92可以包括一个或多个中央处理器(Central Processing Unit,简称为CPU),或者特定集成电路(ApplicationSpecific Integrated Circuit,简称为ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
在一可选实施方式中,第一结果通告信息为用于指示所述对端存在第一哈希运算的哈希值为所述第一哈希值的服务的存在指示信息。处理器92具体用于控制通信接口91根据接收的存在指示信息,向所述对端发送第二查询请求消息,并接收对端返回的第二查询响应消息,所述第二查询请求消息携带有所述待发现服务的服务标识信息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识所述对端是否存在所述待发现服务;然后在所述第二结果通告信息标识所述对端存在所述待发现服务时,确定所述对端存在所述待发现服务,或者在所述第二结果通告信息标识所述对端不存在所述待发现服务时,确定所述对端不存在所述待发现服务。
在一可选实施方式中,所述第一结果通告信息为用于指示所述对端不存在第一哈希运算的哈希值为所述第一哈希值的服务的不存在指示信息。处理器92具体用于根据通信接口91接收的不存在指示信息,确定所述对端不存在所述待发现服务。
在一可选实施方式中,所述第一结果通告信息为第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值。所述第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,是对第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息进行第二哈希运算获得的。基于此,处理器92具体用于对所述待发现服务的服务标识信息进行第二哈希运算,获取所述待发现服务对应的第二哈希值,然后在所述待发现服务对应的第二哈希值存在于所述第一查询响应消息中时,确定所述对端存在所述待发现服务,在所述待发现服务对应的第二哈希值不存在于所述第一查询响应消息中时,确定所述对端不存在所述待发现服务。
可选的,所述第一哈希运算可以为16位的哈希运算,所述第二哈希运算可以为32位的哈希运算。
在一可选实施方式中,所述第一结果通告信息为第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息。基于此,处理器92具体用于在所述待发现服务的服务标识信息存在于所述第一查询响应消息中时,确定所述对端存在所述待发现服务,在所述待发现服务的服务标识信息不存在于所述第一查询响应消息中时,确定所述对端不存在所述待发现服务。
可选的,如果上述通信接口91、处理器92和存储器93相互独立实现,则通信接口91、处理器92和存储器93可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended IndustryStandard Architecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
如果上述通信接口91、处理器92和存储器93集成在一块芯片上实现,则通信接口91、处理器92和存储器93可以通过内部接口完成相互间的通信。
本实施例提供的服务信息发现设备可以是STA,但不限于此。
本实施例提供的服务信息发现设备可用于执行图1或图2所示方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的服务信息发现设备,主动发送查询请求消息,发现周边设备是否存在自己需要发现的服务,在该过程中,通过在查询请求消息中携带相对较短的服务标识信息的哈希值,而不是直接携带待发现服务的服务标识信息,减小了查询请求消息的长度,有利于减小查询请求消息对信道资源的占用,有利于节约信道资源;另一方面由于减小查询请求消息的长度,在查询请求消息被浪费的情况下,相当于将会被浪费掉的查询请求消息变短了,因此也有助于减少对信道资源的浪费,也有利于提高无线资源的利用率。
图10为本发明一实施例提供的服务信息提供设备的结构示意图。如图10所示,本实施例的设备包括:第一接收单元1001和第一发送单元1002。
第一接收单元1001,用于接收第一查询请求消息,所述第一查询请求消息携带有第一哈希值,所述第一哈希值是发送第一查询请求消息的对端对待发现服务的服务标识信息进行第一哈希运算获得的。
第一发送单元1002,用于发送第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,以使所述对端至少根据所述第一结果通告信息确定本端是否存在所述待发现服务,所述第一结果通告信息用于标识本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务。其中,第一发送单元1002和第一接收单元1001连接,具体用于在第一接收单元1001接收到第一查询请求消息后,根据第一查询请求消息向对端发送第一查询响应消息。
在一可选实施方式中,如图11所示,第一发送单元1002的一种实现结构包括:第一确定模块10021和第一发送模块10022。
第一确定模块10021,与第一接收单元1001连接,用于根据第一接收单元1001接收的第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务。
第一发送模块10022,与第一确定模块10021连接,用于在第一确定模块10021确定出本端存在第一哈希运算的哈希值为第一哈希值的服务时,将存在指示信息作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端,所述存在指示信息用于标识本端存在第一哈希运算的哈希值为所述第一哈希值的服务;或者在所述第一确定模块10021确定出本端不存在第一哈希运算的哈希值为第一哈希值的服务时,将不存在指示信息作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端,所述不存在指示信息用于标识本端不存在第一哈希运算的哈希值为所述第一哈希值的服务。
基于上述,如图11所示,所述服务信息提供设备还包括:第二接收单元1003和第二发送单元1004。
第二接收单元1003,用于接收所述对端根据所述存在指示信息发送的第二查询请求消息,所述第二查询请求消息携带有所述待发现服务的服务标识信息。第二接收单元1003与第一发送模块10022连接。
第二发送单元1004,用于向所述对端发送第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,以使所述对端根据所述第二结果通告信息确定本端是否存在所述待发现服务,所述第二结果通告信息用于标识本端是否存在所述待发现服务。第二发送单元1004和第二接收单元1003连接,具体用于在第二接收单元1003接收到第二查询请求消息后,向对端发送第二查询响应消息。
在一可选实施方式中,如图11所示,第一发送单元1002的另一种实现结构包括:第二确定模块10023、获取模块10024和第二发送模块10025。
第二确定模块10023,与第一接收单元1001连接,用于根据第一接收单元1001接收的第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务。
获取模块10024,与第二确定模块10023连接,用于在第二确定模块10023确定出本端存在第一哈希运算的哈希值为所述第一哈希值的服务时,获取第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,所述第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,是对所述第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息进行第二哈希运算获得的。第一哈希值和第二哈希值的位数长度可以不同,且第二哈希运算的位数长度可以长于第一哈希运算的位数长度。例如,如果第一哈希运算可以为16位哈希运算,则第二哈希运算可以是32位或128位等的哈希运算。
第二发送模块10025,与获取模块10024连接,用于将获取模块10024获取的第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,作为所述第一结果通告信息封装在所述第一查询响应消息中,发送给所述对端。
在一可选实施方式中,如图11所示,第一发送单元1002的又一种实现结构包括:第三确定模块10026和第三发送模块10027。
第三确定模块10026,与第一接收单元1001连接,用于根据第一接收单元1001接收的第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务。
第三发送模块10027,与第三确定模块10026连接,用于在第三确定模块10026确定出本端存在第一哈希运算的哈希值为第一哈希值的服务时,将第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息,作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端。
本实施例提供的服务信息提供设备可以是AP或STA,但不限于此。
本实施例提供的服务信息提供设备的各功能单元或模块可用于图3或图4所示方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的服务信息提供设备,与上述实施例提供的服务信息发现设备相互配合,使得服务信息发现设备可以在查询请求消息中携带相对较短的服务标识信息的哈希值,而不是直接携带待发现服务的服务标识信息,减小了查询请求消息的长度,有利于减小查询请求消息对信道资源的占用,有利于节约信道资源;另一方面由于减小查询请求消息的长度,在查询请求消息被浪费的情况下,相当于将会被浪费掉的查询请求消息变短了,因此也有助于减少对信道资源的浪费,也有利于提高无线资源的利用率。
图12为本发明又一实施例提供的服务信息提供设备的结构示意图。如图12所示,本实施例的设备包括:通信接口1201、存储器1202和处理器1203。
通信接口1201,用于接收第一查询请求消息,并发送第一查询响应消息,所述第一查询请求消息携带有第一哈希值,所述第一哈希值是发送第一查询请求消息的端对待发现服务的服务标识信息进行第一哈希运算获得的;所述第一查询响应消息携带有第一结果通告信息,以使所述对端至少根据所述第一结果通告信息确定本端是否存在所述待发现服务,所述第一结果通告信息用于标识本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务。
存储器1202,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器1202可以包含高速RAM存储器,也可以还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1203,用于执行存储器1202存放的程序。其中,处理器1203可以包括一个或多个CPU,或者特定ASIC,或者是被配置成实施本发明实施例的一个或多个集成电路。
在一可选实施方式中,处理器1203用于根据通信接口1201接收的第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务,并将确定结果提供给通信接口1201。通信接口1201具体用于在处理器1203确定出本端存在第一哈希运算的哈希值为第一哈希值的服务时,将存在指示信息作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端,所述存在指示信息用于标识本端存在第一哈希运算的哈希值为所述第一哈希值的服务,或者在处理器1203确定出本端不存在第一哈希运算的哈希值为第一哈希值的服务时,将不存在指示信息作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端,所述不存在指示信息用于标识本端不存在第一哈希运算的哈希值为所述第一哈希值的服务。
基于上述,通信接口1201还用于接收所述对端根据所述存在指示信息发送的第二查询请求消息,并向所述对端发送第二查询响应消息;所述第二查询请求消息携带有所述待发现服务的服务标识信息;所述第二查询响应消息携带有第二结果通告信息,以使所述对端根据所述第二结果通告信息确定本端是否存在所述待发现服务,所述第二结果通告信息用于标识本端是否存在所述待发现服务。
在一可选实施方式中,处理器1203用于根据通信接口1201接收的第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务,并在确定出本端存在第一哈希运算的哈希值为第一哈希值的服务时,获取第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,将获取的第二哈希值提供给通信接口1201;所述第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,是对所述第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息进行第二哈希运算获得的。通信接口1201具体用于将处理器1203获取的第一哈希运算的哈希值为所述第一哈希值的服务对应的第二哈希值,作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端。
可选的,所述第二哈希运算的位数长度可以长于第一哈希运算的位数长度。例如,所述第一哈希运算可以为16位的哈希运算,所述第二哈希运算可以为32位的哈希运算。
在一可选实施方式中,处理器1203用于根据通信接口1201接收的第一哈希值,确定本端是否存在第一哈希运算的哈希值为所述第一哈希值的服务,并将确定结果提供给通信接口1201。通信接口1201具体用于在处理器1203确定出本端存在第一哈希运算的哈希值为第一哈希值的服务时,将第一哈希运算的哈希值为所述第一哈希值的服务的服务标识信息,作为所述第一结果通告信息封装在所述第一查询响应消息中发送给所述对端。
可选的,如果上述通信接口1201、存储器1202和处理器1203相互独立实现,则通信接口1201、存储器1202和处理器1203可以通过总线相互连接并完成相互间的通信。所述总线可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
如果上述通信接口1201、存储器1202和处理器1203集成在一块芯片上实现,则通信接口1201、存储器1202和处理器1203可以通过内部接口完成相互间的通信。
本实施例提供的服务信息提供设备可以是AP或STA,但不限于此。
本实施例提供的服务信息提供设备可用于图3或图4所示方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的服务信息提供设备,与上述实施例提供的服务信息发现设备相互配合,使得服务信息发现设备可以在查询请求消息中携带相对较短的服务标识信息的哈希值,而不是直接携带待发现服务的服务标识信息,减小了查询请求消息的长度,有利于减小查询请求消息对信道资源的占用,有利于节约信道资源;另一方面由于减小查询请求消息的长度,在查询请求消息被浪费的情况下,相当于将会被浪费掉的查询请求消息变短了,因此也有助于减少对信道资源的浪费,也有利于提高无线资源的利用率。
图13为本发明又一实施例提供的服务信息发现设备的结构示意图。如图13所示,本实施例的设备包括:接收单元1301和发现处理单元1302。
接收单元1301,用于接收服务信息指示消息,所述服务信息指示消息携带有哈希值指示信息,所述哈希值指示信息用于标识由发送所述服务信息指示消息的对端存在的服务的服务标识信息获得的哈希值。
发现处理单元1302,与接收单元1301连接,用于至少根据接收单元1301接收的哈希值指示信息,确定所述对端是否存在本端需要发现的服务。所述本端是指本实施例服务信息发现设备侧。
在一可选实施方式中,如图14所示,发现处理单元1302的一种实现结构包括:获取模块13021和确定模块13022。
获取模块13021,用于获取本端需要发现的服务对应的第一哈希值,所述第一哈希值是对本端需要发现的服务的服务标识信息进行第一哈希运算获得的。
确定模块13022,与获取模块13021和接收单元1301连接,用于至少根据获取模块13021获取的第一哈希值是否存在于接收单元1301接收的哈希值指示信息所标识的哈希值中,确定所述对端是否存在本端需要发现的服务。
基于上述,如图14所示,确定模块13022的一种实现结构包括:第一发送子模块13024、第一接收子模块13025和第一确定子模块13026。
第一发送子模块13024,与获取模块13021和接收单元1301连接,用于在所述第一哈希值存在于所述哈希值指示信息所标识的哈希值中时,向所述对端发送第一查询请求消息,所述第一查询请求消息携带有本端需要发现的服务的服务标识信息。
第一接收子模块13025,用于接收所述对端发送的第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识所述对端是否存在本端需要发现的服务。第一接收子模块13025与第一发送子模块13024连接,用于在第一发送子模块13024发送第一查询请求消息之后,接收对端发送的第一查询响应消息。
第一确定子模块13026,与第一接收子模块13025连接,用于在第一接收子模块13025接收的第一结果通告信息标识所述对端存在本端需要发现的服务时,确定所述对端存在本端需要发现的服务,或者在第一接收子模块13025接收的第一结果通告信息标识所述对端不存在本端需要发现的服务时,确定所述对端不存在本端需要发现的服务。
基于上述,如图14所示,确定模块13022的另一种实现结构包括:第二发送子模块13027、第二接收子模块13028和第二确定子模块13029。
第二发送子模块13027,与获取模块13021和接收单元1301连接,用于在所述第一哈希值存在于所述哈希值指示信息所标识的哈希值中时,向所述对端发送第二查询请求消息,所述第二查询请求消息携带有本端需要发现的服务对应的第二哈希值和所述第一哈希值,所述本端需要发现的服务对应的第二哈希值,是对本端需要发现的服务的服务标识信息进行第二哈希运算获得的。第一哈希值和第二哈希值的位数长度可以不同,且第二哈希运算的位数长度可以长于第一哈希运算的位数长度。例如,如果第一哈希运算为16位哈希运算,则第二哈希运算可以是32位或128位等的哈希运算。
第二接收子模块13028,用于接收所述对端发送的第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识所述对端的第一哈希运算的哈希值为所述第一哈希值的服务中,是否存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务。第二接收子模块13028与第二发送子模块13027连接,用于在第二发送子模块13027发送第二查询请求消息之后,接收对端发送的第二查询响应消息。
第二确定子模块13029,与第二接收子模块13028连接,用于在第二接收子模块13028接收的第二结果通告信息标识所述对端的第一哈希运算的哈希值为所述第一哈希值的服务中,存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务时,确定所述对端存在本端需要发现的服务,或者在第二接收子模块13028接收的第二结果通告信息标识所述对端的第一哈希运算的哈希值为所述第一哈希值的服务中,不存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务时,确定所述对端不存在本端需要发现的服务。
本实施例提供的服务信息发现设备可以是STA,但不限于此。
本实施例提供的服务信息发现设备的各功能单元或模块可用于执行图5所示方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的服务信息发现设备,接收对端主动广播的服务信息指示消息,进而根据服务信息指示信息中的哈希值指示信息发现对端是否有自己需要发现的服务,由于哈希值指示信息比所有服务的服务标识信息的长度之和要小很多,减小了服务信息指示消息,进而减小了服务信息指示消息占用的信道资源,有利于提高信道资源的利用率。
图15为本发明又一实施例提供的服务信息发现设备的结构示意图。如图15所示,本实施例的设备包括:通信接口1501、处理器1502和存储器1503。
通信接口1501,用于接收服务信息指示消息,所述服务信息指示消息携带有哈希值指示信息,所述哈希值指示信息用于标识由发送所述服务信息指示消息的对端存在的服务的服务标识信息获得的哈希值。
存储器1503,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器1503可以包含高速RAM存储器,也可以还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1502,用于执行存储器1503存放的程序,以用于至少根据通信接口1501接收的哈希值指示信息,确定所述对端是否存在本端需要发现的服务。所述本端是指本实施例服务信息发现设备侧。其中,处理器1502可以包括一个或多个CPU,或者特定ASIC,或者是被配置成实施本发明实施例的一个或多个集成电路。
在一可选实施方式中,处理器1502具体用于获取本端需要发现的服务对应的第一哈希值,所述第一哈希值是对本端需要发现的服务的服务标识信息进行第一哈希运算获得的;至少根据所获取的第一哈希值是否存在于通信接口1501接收的哈希值指示信息所标识的哈希值中,确定所述对端不存在本端需要发现的服务。
基于上述,处理器1502具体用于在所述第一哈希值存在于所述哈希值指示信息所标识的哈希值中时,控制通信接口1501向所述对端发送第一查询请求消息,并接收所述对端发送的第一查询响应消息,并在通信接口1501接收的第一结果通告信息标识所述对端存在本端需要发现的服务时,确定所述对端存在本端需要发现的服务,或者在通信接口1501接收的第一结果通告信息标识所述对端不存在本端需要发现的服务时,确定所述对端不存在本端需要发现的服务。所述第一查询请求消息携带有本端需要发现的服务的服务标识信息;所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识所述对端是否存在本端需要发现的服务。相应的,通信接口1501还用于在处理器1502的控制下,向所述对端发送第一查询请求消息,并接收所述对端发送的第一查询响应消息。
或者,
处理器1502具体用于在所述第一哈希值存在于所述哈希值指示信息所标识的哈希值中时,控制通信接口1501向所述对端发送第二查询请求消息,并接收所述对端发送的第二查询响应消息;并在通信接口1501接收的第二结果通告信息标识所述对端的第一哈希运算的哈希值为所述第一哈希值的服务中,存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务时,确定所述对端存在本端需要发现的服务,或者在通信接口1501接收的第二结果通告信息标识所述对端的第一哈希运算的哈希值为所述第一哈希值的服务中,不存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务时,确定所述对端不存在本端需要发现的服务。所述第二查询请求消息携带有本端需要发现的服务对应的第二哈希值和所述第一哈希值,所述本端需要发现的服务对应的第二哈希值,是对本端需要发现的服务的服务标识信息进行第二哈希运算获得的;所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识所述对端的第一哈希运算的哈希值为所述第一哈希值的服务中,是否存在第二哈希运算的哈希值与本端需要发现的服务对应的第二哈希值相同的服务。相应的,通信接口1501还用于在处理器1502的控制下,向所述对端发送第二查询请求消息,并接收所述对端发送的第二查询响应消息。
可选的,如果上述通信接口1501、存储器1503和处理器1502相互独立实现,则通信接口1501、存储器1503和处理器1502可以通过总线相互连接并完成相互间的通信。所述总线可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
如果上述通信接口1501、存储器1503和处理器1502集成在一块芯片上实现,则通信接口1501、存储器1503和处理器1502可以通过内部接口完成相互间的通信。
本实施例提供的服务信息发现设备可以是STA,但不限于此。
本实施例提供的服务信息发现设备可用于执行图5所示方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的服务信息发现设备,接收对端主动广播的服务信息指示消息,进而根据服务信息指示信息中的哈希值指示信息发现对端是否有自己需要发现的服务,由于哈希值指示信息比所有服务的服务标识信息的长度之和要小很多,减小了服务信息指示消息,进而减小了服务信息指示消息占用的信道资源,有利于提高信道资源的利用率。
图16为本发明又一实施例提供的服务信息提供设备的结构示意图。如图16所示,本实施例的设备包括:获取单元1601和广播单元1602。
获取单元1601,用于获取本端存在的服务对应的哈希值,所述哈希值是对本端存在的服务的服务标识信息进行第一哈希运算获得的。
广播单元1602,与获取单元1601连接,用于广播服务信息指示消息,所述服务信息指示消息携带有哈希值指示信息,以使接收到所述服务信息指示消息的对端至少根据所述哈希值指示信息确定本端是否存在所述对端需要发现的服务,所述哈希值指示信息用于标识本端存在的服务对应的哈希值。
在一可选实施方式中,如图17所示,广播单元1602的一种实现结构包括:确定模块16021和设置广播模块16022。
确定模块16021,用于根据本端存在的服务的数量,确定位表长度。
设置广播模块16022,与确定模块16021连接,用于在所述服务信息指示消息中封装位表和所述位表长度,并将所述位表中本端存在的服务对应的哈希值所对应的位置置为1,然后广播所述服务信息指示消息。
在一可选实施方式中,如图17所示,所述服务信息提供设备还包括:第一接收单元1603和第一发送单元1604。
第一接收单元1603,用于接收所述对端发送的第一查询请求消息,所述第一查询请求消息携带有所述对端需要发现的服务的服务标识信息。第一接收单元1603可以与设置广播模块16022连接。
第一发送单元1604,与第一接收单元1603连接,用于根据所述对端需要发现的服务的服务标识信息,向所述对端发送第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识本端是否存在所述对端需要发现的服务,以使所述对端至少根据所述第一结果通告信息确定本端是否存在所述对端需要发现的服务。
在一可选实施方式中,如图17所示,所述服务信息提供设备还包括:第二接收单元1605和第二发送单元1606。
第二接收单元1605,用于接收所述对端发送的第二查询请求消息,所述第二查询请求消息携带有所述对端需要发现的服务对应的第一哈希值和所述对端需要发现的服务对应的第二哈希值,所述对端需要发现的服务对应的第一哈希值和第二哈希值分别是对所述对端需要发现的服务的服务标识信息进行第一哈希运算和第二哈希运算获得的。第二接收单元1605可以与设置广播模块16022连接。第一哈希值和第二哈希值的位数长度可以不同,且第二哈希运算的位数长度可以长于第一哈希运算的位数长度。例如,如果第一哈希运算为16位哈希运算,则第二哈希运算可以是32位或128位等的哈希运算。
第二发送单元1606,与第二接收单元1605连接,用于根据所述第一哈希值和所述第二哈希值,向所述对端发送第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识本端的第一哈希运算的哈希值为所述第一哈希值的服务中,是否存在第二哈希运算的哈希值与所述第二哈希值相同的服务,以使所述对端根据所述第二结果通告信息确定本端是否存在所述对端需要发现的服务。
本实施例提供的服务信息提供设备可以是AP或STA,但不限于此。
本实施例提供的服务信息提供设备的各功能单元或模块可用于执行图6所示方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的服务信息提供设备,与上述实施例提供的服务信息发现设备相配合,通过主动广播服务信息指示消息,有利于周边设备及时发现自己需要发现的服务,并且服务信息指示消息中的哈希值指示信息相对于所有服务的服务标识信息的长度之和要小很多,减小了服务信息指示消息,进而减小了服务信息指示消息占用的信道资源,有利于提高信道资源的利用率,另外,在服务信息提供设备不存在周边设备所需的服务的情况下,由于服务信息提供设备广播的服务信息指示消息减小了,相当于减小了会被浪费的服务信息指示消息,进而减小了这些会被浪费的服务信息指示消息所占用的信道资源,有利于节约信道资源,也有利于提高信道资源的利用率。
图18为本发明又一实施例提供的服务信息提供设备的结构示意图。如图18所示,本实施例的设备包括:通信接口1801、处理器1802和存储器1803。
存储器1803,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器1803可以包含高速RAM存储器,也可以还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器1802,用于执行存储器1803存放的程序,以用于获取本端存在的服务对应的哈希值,所述哈希值是对本端存在的服务的服务标识信息进行第一哈希运算获得的。其中,处理器1802可以包括一个或多个CPU,或者特定ASIC,或者是被配置成实施本发明实施例的一个或多个集成电路。
通信接口1801,用于广播服务信息指示消息,所述服务信息指示消息携带有哈希值指示信息,以使接收到所述服务信息指示消息的对端至少根据所述哈希值指示信息确定本端是否存在所述对端需要发现的服务,所述哈希值指示信息用于标识本端存在的服务对应的哈希值。
在一可选实施方式中,处理器1802还用于根据本端存在的服务的数量,确定位表长度,在所述服务信息指示消息中封装位表和所述位表长度,并将所述位表中本端存在的服务对应的哈希值所对应的位置置为1,生成服务信息指示消息并提供给通信接口1801。通信接口1801具体用于广播处理器1802生成的服务信息指示消息。
在一可选实施方式中,通信接口1801还用于接收所述对端发送的第一查询请求消息,所述第一查询请求消息携带有所述对端需要发现的服务的服务标识信息,以及根据所述对端需要发现的服务的服务标识信息,向所述对端发送第一查询响应消息,所述第一查询响应消息携带有第一结果通告信息,所述第一结果通告信息用于标识本端是否存在所述对端需要发现的服务,以使所述对端至少根据所述第一结果通告信息确定本端是否存在所述对端需要发现的服务。
在一可选实施方式中,通信接口1801还用于接收所述对端发送的第二查询请求消息,所述第二查询请求消息携带有所述对端需要发现的服务对应的第一哈希值和所述对端需要发现的服务对应的第二哈希值,所述对端需要发现的服务对应的第一哈希值和第二哈希值分别是对所述对端需要发现的服务的服务标识信息进行第一哈希运算和第二哈希运算获得的;并根据所述第一哈希值和所述第二哈希值,向所述对端发送第二查询响应消息,所述第二查询响应消息携带有第二结果通告信息,所述第二结果通告信息用于标识本端的第一哈希运算的哈希值为所述第一哈希值的服务中是否存在第二哈希运算的哈希值与所述第二哈希值相同的服务,以使所述对端根据所述第二结果通告信息确定本端是否存在所述对端需要发现的服务。
可选的,如果上述通信接口1801、处理器1802和存储器1803相互独立实现,则通信接口1801、处理器1802和存储器1803可以通过总线相互连接并完成相互间的通信。所述总线可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
如果上述通信接口1801、处理器1802和存储器1803集成在一块芯片上实现,则通信接口1801、处理器1802和存储器1803可以通过内部接口完成相互间的通信。
本实施例提供的服务信息提供设备可以是AP或STA,但不限于此。
本实施例提供的服务信息提供设备的各功能单元或模块可用于执行图6所示方法实施例的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例提供的服务信息提供设备,与上述实施例提供的服务信息发现设备相配合,通过主动广播服务信息指示消息,有利于周边设备及时发现自己需要发现的服务,并且服务信息指示消息中的哈希值指示信息相对于所有服务的服务标识信息的长度之和要小很多,减小了服务信息指示消息,进而减小了服务信息指示消息占用的信道资源,有利于提高信道资源的利用率,另外,在服务信息提供设备不存在周边设备所需的服务的情况下,由于服务信息提供设备广播的服务信息指示消息减小了,相当于减小了会被浪费的服务信息指示消息,进而减小了这些会被浪费的服务信息指示消息所占用的信道资源,有利于节约信道资源,也有利于提高信道资源的利用率。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。