CN110688234A - 用户排名方法、装置、系统、存储介质 - Google Patents

用户排名方法、装置、系统、存储介质 Download PDF

Info

Publication number
CN110688234A
CN110688234A CN201810737951.5A CN201810737951A CN110688234A CN 110688234 A CN110688234 A CN 110688234A CN 201810737951 A CN201810737951 A CN 201810737951A CN 110688234 A CN110688234 A CN 110688234A
Authority
CN
China
Prior art keywords
key data
user
ranking
application program
real
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
Application number
CN201810737951.5A
Other languages
English (en)
Inventor
周志刚
陈少杰
张文明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201810737951.5A priority Critical patent/CN110688234A/zh
Publication of CN110688234A publication Critical patent/CN110688234A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种用户排名方法、装置、系统、存储介质,涉及网络直播时主播用户的实时成绩排名这一技术领域,方法包括以下步骤:从所有用户运行的应用程序中实时获取用户的关键数据信息,所述关键数据信息包括应用程序名称、用户识别信息以及关键数据;将所述关键数据信息实时上传到所述服务器中;接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小进行排名。该方法应用在直播平台等场合能够使得观众用户在观看主播的直播画面内容时,能够从服务器中实时的获取到观看的游戏直播的主播的战绩排名,提升观众用户的直播观看体验。本发明还提供了对应的用户排名装置、用户排名系统以及存储介质。

Description

用户排名方法、装置、系统、存储介质
技术领域
本发明属于人机识别技术领域,更具体的涉及一种用于获取用户在使用应用程序过程中的实时关键数据,并由服务器根据该关键数据的数值大小对使用同一个应用程序的用户进行排名的方法、装置、系统、存储介质。
背景技术
目前,随着游戏直播的普及,越来越多的主播及观众参与到游戏直播来,同时随着热门游戏的推广,新的玩法及直播方式也不断的被研发人员进行改进,从而吸引更多的观众进行观看。
例如,对于现在热门的“吃鸡”游戏来说,会有非常多的主播进行直播,不同主播的游戏技术水平不一样,然而为了提高观众用户的参与度及直播的花样性,需要提供一种方法在直播平台上进行评比来显示主播的游戏战况以及该主播的游戏技术水平,从而可以将技术水平更高的主播排列到列表前面将技术水平差些的主播排列到列表后面,这样在观众用户的用户装置上直接展示游戏的直播画面内容和该主播用户在该游戏上的游戏技术水平。
但是现有的排名都是一个周期排一次,比如“吃鸡”游戏一周主播排行榜,并不能对该名主播的游戏水平进行实时更新,导致观众用户获得的只能是过时的排名信息,无法获得他/她正在观看的直播内容所对应的主播在该游戏上的实时的游戏技术水平。
发明内容
本发明是为了解决上述现有技术中不能在观看直播内容的同时实时获取该主播用户的游戏技术水平的问题而进行的,目的在于提供一种用户实时关键数据获取排名方法、装置、系统、存储介质。
在游戏直播中,直播软件和具体直播的游戏会被同时打开并在主播装置(电子计算机、智能通信终端)上运行,主播在玩游戏的同时,直播软件会采集游戏的画面内容通过网络将该内容推送到直播网站的服务器中。
观众用户则通过直播网站的服务器拉取主播推送的直播内容在用户装置上进行视频播放。在直播软件中,主播使用的直播软件会注入一个编写的功能模块到游戏进程中获取游戏的画面及游戏的数据。
在这个被注入的模块中增加获取游戏关键数据的功能,并且通过进程间通信来将获取到的数据发送给直播软件,直播软件则在推送视频流到直播平台服务器的同时,将获取的游戏关键数据发送给直播平台服务器。
直播平台服务器有了游戏的关键数据,则可以对该主播数据进行记录,同时对于同类型的游戏的主播则可以进行排名,得到排名则可以在直播间列表显示主播的战绩排名信息,该信息也会一并随着主播的游戏画面内容被推送到观众用户的用户装置上,这样观众用户就能实时的知晓观看的游戏直播的主播的战绩排名。
在主播装置这边,同时会有2个进程存在,一个是游戏进程,一个是直播软件进程,通过直播软件注入到游戏进程中的模块来获取游戏关键数据,然后通过进程间通信的方式来告诉直播软件。
以上是本发明的发明构思,在本发明的基本发明构思的基础上进行扩展而得到以下的技术方案:
一种用户排名方法,用于获取用户在使用应用程序过程中的实时关键数据,并由服务器根据该关键数据的数值大小对使用同一个应用程序的用户进行排名,其特征在于,包括以下步骤:
从所有用户运行的应用程序中实时获取用户的关键数据信息,所述关键数据信息包括应用程序名称、用户识别信息以及关键数据;
将所述关键数据信息实时上传到所述服务器中;
接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小进行排名,
其中,实时获取该用户的关键数据信息的步骤包括:
通过逆向调试得出所述应用程序对应的进程存储所述关键数据的内存地址,
从所述内存地址从实时读取并得到所述关键数据。
本发明提供的用户排名方法,还可以具有这样的特征,其中,使用动态调试工具windDbg来进行动态的逆向调试。
本发明提供的用户排名方法,还可以具有这样的特征,其中,编写关键数据获取模块,并将该关键数据获取模块注入到对应的应用程序的进程中,在实时运行的应用程序的进程中来进行关键数据的获取。
本发明提供的用户排名方法,还可以具有这样的特征,通过 Windows系统API函数CreateRemoteThread工具在所述应用程序进程中创建一个远程线程,通过创建的远程线程去调用系统函数 LoadLibrary来加载需要注入到所述应用程序进程的内存地址获取模块。
本发明提供的用户排名方法,还可以具有这样的特征,其中,将所述关键数据信息实时上传到所述服务器的步骤包括:
创建命名管道;
通过命名管道建立通信连接;
在所述命名管道中写入获取所述关键数据的命令;
根据命令向所述命名管道中写入对应的关键数据;
从所述命名管道中读取关键数据。
本发明提供的用户排名方法,还可以具有这样的特征,其中,所述应用程序包括网络游戏,所述关键数据包括对应用户的得分值、绩效值或扣分值,所述用户为游戏直播平台的主播用户,所述用户识别信息为主播ID和直播房间号。
本发明提供的用户排名方法,还可以具有这样的特征,其中,排名的具体过程为:
通过排序函数sort得到排序结果listinfo,
从排序结果listinfo中取出排名为第一的主播ID和直播房间号以及关键数据,
在直播平台的列表页面显示上述的主播ID和直播房间号以及关键数据,
依次类推,分别依照顺序从排序结果listinfo中取出其他排名的主播ID和直播房间号以及关键数据并列表页面显示。
本发明还提供一种用户排名装置,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:处理器执行计算机程序时实现上述的方法。
本发明还提供一种用户排名系统,用于获取用户在使用应用程序过程中的实时关键数据,并根据该关键数据的数值大小对使用同一个应用程序的用户进行排名,其特征在于,包括:
关键数据实时获取模块,用于从所有用户运行的应用程序中实时获取用户的关键数据信息,所述关键数据信息包括应用程序名称、用户识别信息以及关键数据;
实时上传模块,用于将所述关键数据信息实时上传到所述服务器中;
排名模块,用于接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小进行排名。
本发明还提供一种存储介质,该存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现上述的方法。
本发明的作用和效果:本发明提供的用户实时关键数据获取排名方法,因为能够从用户运行的应用程序中实时获取该用户的关键数据信息,并建立通将所述关键数据信息实时上传到所述服务器中,然后接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小按照特定规则进行排名,所以该方法应用在直播平台等场合能够使得观众用户在观看主播的直播画面内容时,能够从服务器中实时的获取到观看的游戏直播的主播的战绩排名,提升观众用户的直播观看体验。
附图说明
图1为本发明的实施例中的用户实时关键数据获取排名方法的步骤示意图;
图2为本发明的实施例中的实时获取用户的关键数据信息的步骤示意图;
图3为本发明的实施例中的通过命名管道进行通信的步骤示意图;以及
图4为本发明的实施例中的用户排名系统的结构示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下实施例结合附图对本发明用户实时关键数据获取排名方法、装置、系统、存储介质作具体阐述。
为了说明本发明的基本过程和原理,以下以直播平台上的主播和观众用户两个角色进行直播:主播通过直播平台将自己玩游戏的实时画面内容上传到直播平台的服务器中,而观众用户通过自己的用户装置获取选中的主播的游戏实时画面这个情景为例进行说明。
实施例1
图1为本发明的实施例中的用户实时关键数据获取排名方法的步骤示意图。
步骤S1,从所有用户运行的应用程序中实时获取用户的关键数据信息,所述关键数据信息包括应用程序名称、用户识别信息以及关键数据。
以下具体的以网络游戏“吃鸡”为例,说明是如何获得主播的实时游戏中的击杀数据这个与排名有关的关键数据的。
由于本实施例所涉及的是直播平台和游戏,而游戏是游戏公司开发,直播平台无法获取到游戏公司的数据。所以直播平台只能通过实施例的方式来从游戏中获取直播平台需要的数据。
本实施例是需要获取游戏中主播的击杀数据(杀死敌人的数量),本实施例的主播直播时会在电脑上运行游戏程序和本实施例直播平台提供的直播工具。
图2为本发明的实施例中的实时获取用户的关键数据信息的步骤示意图。
现有的直播工具会编写一个功能模块来注入到游戏中来获取游戏的画面来进行直播。而实施例则需要在获取游戏画面的同时还需要获取游戏中主播角色的击杀数据,从而为后续的击杀排名提供数据支撑。要想获取游戏中主播的击杀数据,则需要读取游戏进程中主播的击杀数据为此,该过程包括以下两个步骤:
步骤S1-1,通过逆向调试得出所述应用程序对应的进程存储所述关键数据的内存地址。具体到本实施例就是是使用动态调试工具 windDbg来进行动态的逆向调试。
具体就是需要首先分析游戏进程中,主播击杀数据存储在游戏进程的内存中的内存地址,本文则需要通过逆向调试的方法来不断的调试测试和分析出游戏进程存储主播技术的数据。具体则可以通过 Windows提供的动态调试工具WinDbg来动态调试游戏进程,来寻找游戏中是哪个变量存储了当前游戏的主播技术人数信息。游戏的每种数据都会使用一个全局变量来存储其数据,而一个全局变量对应与游戏进程则是一个内存地址XXXX。最终通过不断的尝试和调试可以分析到的结果则是全局变量NumKillPlayers存储的是游戏的“当前击杀的敌人数目数据”,那么则找到了本实施例所需要的关键数据:击杀数据。
由于我们的实现方式是在游戏已经发布后,那么其在内存中的代码都是汇编语言形式存在的,所以只能通过调用汇编语言的形式去读取游戏中主播的击杀数据存储的地址。
至此,通过这个步骤S1-1就实现了分析获取游戏中主播技术敌人数目的数据获取功能,为此获取了关键数据的存储地址。
步骤S1-2,从所述内存地址中实时读取并得到所述关键数据。具体到本实施例中,就是:
A先编写关键数据获取模块。
本实施例则会编写一个独立的关键数据获取函数即关键数据获取模块来读取游戏中击杀数据。具体实现如下:
Int GetKillPlayerNum()
{
asm
{
mov NumKillPlayers,[XXX]//NumKillPlayers则是存储读取的当前主播技术的敌人个数,[XXX]则标示游戏中存储主播技术敌人个数的全局变量NumKillPlayers的内存地址,该地址通过步骤 S1-1获得。
}
Return NumKillPlayers;
//返回值则是主播当前击杀的敌人数目。
}
其中__asm{}括起来的内容标示在C语言中内嵌入汇编代码。
其中XXX参数的值则是一个内存地址,内存地址具体则是通过 WinDbg动态调试分析来找到,而Windbg则是通过不断的尝试不同的内存地址下断点调试来分析找到。
B然后将该关键数据获取模块注入到对应的应用程序的进程中,在实时运行的应用程序的进程中来进行关键数据的获取。
将获取主播击杀数据的关键数据获取模块编写到获取游戏画面的模块中。
本实施例提到过,对于游戏直播来说,直播平台会编写一个独立的模块,用于获取游戏的画面内容,从而进行游戏直播,那么则此模块中本实施例会加入获取主播杀敌人数这一关键数据的功能,从而实时获取主播当前杀敌人数。
将获取主播杀敌人数的关键数据获取模块注入到游戏的进程中。对于游戏直播来说,直播平台会编写一个独立的模块,用于获取游戏的画面内容,从而进行游戏直播,那么首先则需要将编写的关键数据获取模块注入到游戏进程中的功能。对于将模块注入到游戏进程中本文则采用使用远程线程的方式。
本实施例是通过调用Windows系统提供的API函数来将一个模块注入到另一个游戏进程中。基本思路是通过Windows系统API函数 CreateRemoteThread来在游戏进程中创建一个远程线程(之所以称为远程线程是因为这个线程是直播软件进程在游戏进程中创建的一个线程),通过创建的远程线程去调用系统函数LoadLibrary来加载需要注入到游戏进程的关键数据获取模块。具体实现如下:
1)通过WindowsAPI函数VirtualAllocEx函数在目标进程的内存空间中分配内存。
2)通过WindowsAPI函数WriteProcessMemory来将自己编写的需要注入的关键数据获取模块的磁盘路径写入到已经分配的内存中 (上一步步骤1)分配的目标进程的内存空间)。
3)调用WindowsAPI函数CreateRemoteThread函数来在游戏进程中创建一个线程,线程的执行逻辑就是调用WindowsAPI函数 LoadLibrary来加载步骤2)中通过在目标进程空间写入的关键数据获取模块的磁盘路径。这样就实现了在目标进程开启一个线程,通过线程来加载本实施例的关键数据获取模块,实现了对游戏进程注入本实施例的关键数据获取模块的功能。
其中核心思想则是让游戏进程来调用LoadLibrary来加载本文需要注入的功能模块,其具体实现的代码为:
HMODULE
LoadLibraryA(
__in LPCSTR lpLibFileName
);
此函数则是Lodlibrary的函数原型,其中有且只有一个参数 lpLibFileName需要传入模块的名称,此模块的名称则是在步骤A中编写的关键数据获取模块的名称。
至此,通过这个步骤就实现了将本文编写的关键数据获取模块注入到游戏进程中从而实时获取关键数据。
步骤A中编写的获取主播当前杀敌人数的功能函数 GetKillPlayerNum(),通过定时的不断调用此函数来读取游戏中当前主播的杀敌人数。在游戏中被注入的关键数据获取模块不断的获取主播当前杀敌人数。
至此,通过这个步骤就实现了编写的获取游戏画面的模块中加入获取主播当前杀敌人数的关键数据获取模块的调用,从而能够实时获取到主播在游戏中的杀敌人数这个关键数据,将包括应用程序名称、用户识别信息以及实时获取的关键数据整合成关键数据信息。
步骤S2,将所述关键数据信息实时上传到所述服务器中。
该过程有以下两个关键的过程:
(1)在直播软件中编写命名管道用于直播软件与游戏进程的通信,来将从游戏进程中获取的关键数据发送到直播软件进程中。
(2)直播软件将数据发送给直播平台服务器。
命名管道是通过网络来完成进程间的通信,它屏蔽了底层的网络协议细节,通过命名管道本实施例实现了直播软件与游戏进程中注入的关键数据整获取模块之间的通信。
在命名管道中,本实施例将注入的关键数据整获取模块做为命名管道的客户端,主播软件做为命名管道的服务端。
图3为本发明的实施例中的通过命名管道进行通信的步骤示意图。
首先服务端创建一个命名管道,然后等待客户端来连接。一旦编写的模块注入到游戏进程中开始运行后,该模块会去连接这个命名管道,一旦连接上这个命名管道,那么就可以实现直播软件和游戏中的注入的关键数据整获取模块进行通信。具体的实现可以分解为以下的步骤:
步骤S2-1,创建命名管道。
服务端调用WindowsAPI函数CreateNamedPipe创建命名管道。
其中需要参数命名管道的名字,这个名字可以自己定一个唯一的,不会与系统其他进程的管道重名即可。命名管道的客户端游戏注入模块会通过这个名字来连接这个管道。
客户端通过调用函数CreateFile来连接服务端创建的命名管道。命名管道的名字可以事先定义好的唯一名称。
步骤S2-2,通过命名管道建立通信连接。
服务端通过调用函数ConnectNamedPipe来等待命名管道的客户端连接。对应的,客户端通过调用函数WaitNamedPipe来等待服务端的响应。
步骤S2-3,在所述命名管道中写入获取所述关键数据的命令。
服务端通过调用函数WriteFile往命名管道中写入获取游戏关键数据的命令。
步骤S2-4,根据命令向所述命名管道中写入对应的关键数据。
客户端通过调用函数WriteFile向管道中写入数据。
步骤S2-5,从所述命名管道中读取关键数据。
客户端通过调用函数ReadFile来从管道中读取服务端发送的获取游戏的关键数据。
至此,通过这个步骤就实现了通过命名管道,使得直播软件和游戏进程能够实时通信。
步骤S3,接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小进行排名。
直播平台服务器会不断的通过主播操纵的主播端收到各个主播上报的当前主播的杀敌人数信息、游戏名称、主播用户识别信息,从而直播平台会将信息存储下来,同时会对信息进行排:杀敌人数越高,则对应的主播会排列到最前面。具体实现如下:
对于每个主播上报的信息包括当前主播的名称Name、主播的房间号Roomid(这些房间对应的都是直播同一个游戏的主播)以及当前主播的杀敌人数信息NumKillPlayers,该信息的格式代码为:
Struct killInfo{
Name:
Roomid;
NumKillPlayers;
}
本实施例使用STL中的list来存储上报的信息:
List<killInfo>listInfo;
假设当前有3个主播上报了当前的杀敌人数信息。
Killinfo1.name=“主播1”
Killinfo1.roomid=335;
Killinfo1.NumKillPlayers=6;
则服务器将此信息存储为listInfo.push_back(Killinfo1)。
当有第二个主播上报时,
Killinfo2.name=“主播2”
Killinfo2.roomid=456;
Killinfo2.NumKillPlayers=8;
则服务器将此信息存储为listInfo.push_back(Killinfo2)。
当有第三个主播上报时,
Killinfo3.name=“主播3”
Killinfo3.roomid=112;
Killinfo3.NumKillPlayers=9;
则服务器将此信息存储为listInfo.push_back(Killinfo3)。
此时服务器则存储了3个主播的上报信息。
接下来服务器对主播上报的信息进行排序,本实施例中进行排序 (排名)的具体过程包括:
首先,通过排序函数sort得到排序结果listinfo,
其次,从排序结果listinfo中取出排名为第一的主播ID和直播房间号以及关键数据,
然后,在直播平台的列表页面显示上述的主播ID和直播房间号以及关键数据,
最后,依此类推,分别依照顺序从排序结果listinfo中取出其他排名的主播ID和直播房间号以及关键数据并列表页面显示。
本文存储的是list结构信息,所以需要使用排序的比较函数。
具体则可以通过重载killInfo中的比较运算符。
<(killInfo&other){
This.NumKillPlayers<other.NumKillPlayers;
}
从比较2个killInfo结构对象,那么其实际就是通过比较其 NumKillPlayers这个成员变量的大小。
从而可以调用STL提供的排序函数来对list中所有的killInfo 对象成员进行排序:
sort(listInfo.begin(),listInfo.end());
其中sort是排序函数,其中提供的参数则是对排序的listInfo 的起始地址和结束地址,本文则是对整个listInfo对象进行排序。
完成sort函数调用后,则listInfo中存储的第一个元素的 NumKillPlayers是最大的,第二个则次之,依次类推,从而对 listinfo的所有存储的对象进行了按照杀敌人数信息 NumKillPlayers的大小进行排序:越大的数目则排序越靠前。
得到排序结果后,直播平台服务器则可以对该游戏的直播列表按照listinfo中元素的顺序来展示直播间以及对应的主播的实时排名情况:
从listinfo中取出排名为第一的List<killInfo>listInfo,并从中取出房间号roomid和主播名称name以及NumKillPlayers,则可以在列表页面显示该直播间是第一名,依次类推就实现了主播玩同一个游戏的主播的直播间以击杀人数多少的实时排名。
实施例2
以下对本实施例的用户排名装置进行详细说明。
用户排名装置,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,处理器执行计算机程序时实现下述步骤的方法:
步骤S1,从所有用户运行的应用程序中实时获取用户的关键数据信息,所述关键数据信息包括应用程序名称、用户识别信息以及关键数据;
步骤S2,将所述关键数据信息实时上传到所述服务器中;
步骤S3,接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小进行排名。
作为一种优化,本实施例提供的用户排名装置的步骤S1还包括以下的两个子步骤:
步骤S1-1,通过逆向调试得出所述应用程序对应的进程存储所述关键数据的内存地址。
步骤S1-2,从所述内存地址从实时读取并得到所述关键数据。
而步骤S2中实时上传的步骤是通过以下子步骤来实现的:
步骤S2-1,创建命名管道。
步骤S2-2,通过命名管道建立通信连接。
步骤S2-3,在所述命名管道中写入获取所述关键数据的命令。
步骤S2-4,根据命令向所述命名管道中写入对应的关键数据。
步骤S2-5,从所述命名管道中读取关键数据。
实施例3
以下对本实施例提供的存储介质进行详细说明。
一种存储介质,该存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现以下的方法:
步骤S1,从所有用户运行的应用程序中实时获取用户的关键数据信息,所述关键数据信息包括应用程序名称、用户识别信息以及关键数据;
步骤S2,将所述关键数据信息实时上传到所述服务器中;
步骤S3,接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小进行排名。
作为一种优化,本实施例提供的存储介质的步骤S1还包括以下的两个子步骤:
步骤S1-1,通过逆向调试得出所述应用程序对应的进程存储所述关键数据的内存地址。
步骤S1-2,从所述内存地址从实时读取并得到所述关键数据。
而步骤S2中实时上传的步骤是通过以下子步骤来实现的:
步骤S2-1,创建命名管道。
步骤S2-2,通过命名管道建立通信连接。
步骤S2-3,在所述命名管道中写入获取所述关键数据的命令。
步骤S2-4,根据命令向所述命名管道中写入对应的关键数据。
步骤S2-5,从所述命名管道中读取关键数据。
实施例4
以下结合附图对实施例的用户排名系统进行详细说明。
图4为本发明的实施例中的用户排名系统的结构示意图。
用户排名系统100,用于获取用户在使用应用程序过程中的实时关键数据,并根据该关键数据的数值大小对使用同一个应用程序的用户进行排名,如图4所示,包括:
关键数据实时获取模101,用于从所有用户运行的应用程序中实时获取用户的关键数据信息,所述关键数据信息包括应用程序名称、用户识别信息以及关键数据;
实时上传模块102,用于将所述关键数据信息实时上传到所述服务器中;
排名模块103,用于接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小进行排名。
进一步,上述的关键数据实时获取模101还包括以下两个单元:内存地址获取单元1011和实时读取单元1012,其功能是也是通过以下的两个单元来实现的:
内存地址获取单元1011用于通过逆向调试得出所述应用程序对应的进程存储所述关键数据的内存地址。
实时读取单元1012用于从所述内存地址从实时读取并得到所述关键数据。
实时上传模块102还具有以下的5个单元来完成实时关键数据获取并上传的操作:
第一单元1021,用于创建命名管道。
第二单元1022,用于通过命名管道建立通信连接。
第三单元1023,用于在所述命名管道中写入获取所述关键数据的命令。
第四单元1024,用于根据命令向所述命名管道中写入对应的关键数据。
第五单元1025,用于从所述命名管道中读取关键数据。
本实施例的作用和效果:本实施例提供的用户实时关键数据获取排名方法,因为能够从用户运行的应用程序中实时获取该用户的关键数据信息,并建立通将所述关键数据信息实时上传到所述服务器中,然后接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小按照特定规则进行排名,所以该方法应用在直播平台等场合能够使得观众用户在观看主播的直播画面内容时,能够从服务器中实时的获取到观看的游戏直播的主播的战绩排名,提升观众用户的直播观看体验。
上述实施例是以游戏“吃鸡”为例并以其中的关键数据:玩家击杀人数来进行排名的,作为一中更普遍的情形,这里的吃鸡游戏可以是其他的的游戏,关键数据可以是得分值、绩效值或扣分值。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/ 或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种用户排名方法,用于获取用户在使用应用程序过程中的实时关键数据,并由服务器根据该关键数据的数值大小对使用同一个应用程序的用户进行排名,其特征在于,包括以下步骤:
从所有用户运行的应用程序中实时获取用户的关键数据信息,所述关键数据信息包括应用程序名称、用户识别信息以及关键数据;
将所述关键数据信息实时上传到所述服务器中;
接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小进行排名,
其中,实时获取该用户的关键数据信息的步骤包括:
通过逆向调试得出所述应用程序对应的进程存储所述关键数据的内存地址,
从所述内存地址从实时读取并得到所述关键数据。
2.根据权利要求2所述的用户排名方法,其特征在于:
其中,使用动态调试工具windDbg来进行动态的逆向调试。
3.根据权利要求2所述的用户排名方法,其特征在于:
其中,编写关键数据获取模块,并将该关键数据获取模块注入到对应的应用程序的进程中,在实时运行的应用程序的进程中来进行关键数据的获取。
4.根据权利要求3所述的用户排名方法,其特征在于:
通过Windows系统API函数CreateRemoteThread工具在所述应用程序进程中创建一个远程线程,
通过创建的远程线程去调用系统函数LoadLibrary来加载需要注入到所述应用程序进程的关键数据获取模块。
5.根据权利要求1所述的用户排名方法,其特征在于,其中,将所述关键数据信息实时上传到所述服务器的步骤包括:
创建命名管道;
通过命名管道建立通信连接;
在所述命名管道中写入获取所述关键数据的命令;
根据命令向所述命名管道中写入对应的关键数据;
从所述命名管道中读取关键数据。
6.根据权利要求1所述的用户排名方法,其特征在于:
其中,所述应用程序包括网络游戏,所述关键数据包括对应用户的得分值、绩效值或扣分值,
所述用户为游戏直播平台的主播用户,所述用户识别信息为主播ID和直播房间号。
7.根据权利要求6所述的用户排名方法,其特征在于:
其中,排名的具体过程为:
通过排序函数sort得到排序结果listinfo,
从排序结果listinfo中取出排名为第一的主播ID和直播房间号以及关键数据,
在直播平台的列表页面显示上述的主播ID和直播房间号以及关键数据,
依此类推,分别依照顺序从排序结果listinfo中取出其他排名的主播ID和直播房间号以及关键数据并列表页面显示。
8.一种用户排名装置,包括存储器和处理器,存储器上储存有在处理器上运行的计算机程序,其特征在于:处理器执行计算机程序时实现权利要求1至7任一项所述的方法。
9.一种用户排名系统,用于获取用户在使用应用程序过程中的实时关键数据,并根据该关键数据的数值大小对使用同一个应用程序的用户进行排名,其特征在于,包括:
关键数据实时获取模块,用于从所有用户运行的应用程序中实时获取用户的关键数据信息,所述关键数据信息包括应用程序名称、用户识别信息以及关键数据;
实时上传模块,用于将所述关键数据信息实时上传到所述服务器中;
排名模块,用于接收所述关键数据信息,并对使用同一个应用程序的所有用户根据对应的关键数据的大小进行排名。
10.一种存储介质,该存储介质上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法。
CN201810737951.5A 2018-07-06 2018-07-06 用户排名方法、装置、系统、存储介质 Pending CN110688234A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810737951.5A CN110688234A (zh) 2018-07-06 2018-07-06 用户排名方法、装置、系统、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810737951.5A CN110688234A (zh) 2018-07-06 2018-07-06 用户排名方法、装置、系统、存储介质

Publications (1)

Publication Number Publication Date
CN110688234A true CN110688234A (zh) 2020-01-14

Family

ID=69107490

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810737951.5A Pending CN110688234A (zh) 2018-07-06 2018-07-06 用户排名方法、装置、系统、存储介质

Country Status (1)

Country Link
CN (1) CN110688234A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112619165A (zh) * 2020-12-18 2021-04-09 咪咕互动娱乐有限公司 游戏用户选择方法、系统、服务器和存储介质
CN112689154A (zh) * 2020-12-18 2021-04-20 咪咕互动娱乐有限公司 直播控制权交换方法、装置、服务器及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030003406A (ko) * 2001-06-30 2003-01-10 주식회사 케이티 멀티미디어 서버 시스템에서의 실시간 영상정보 정렬 방법
CN104645615A (zh) * 2015-03-02 2015-05-27 郑州三生石科技有限公司 一种多人线上视频游戏
CN105935492A (zh) * 2016-06-03 2016-09-14 上海慧模智能科技有限公司 游戏设备和交互系统
CN106599251A (zh) * 2016-12-20 2017-04-26 北京小米移动软件有限公司 展示主播排名的方法和装置
CN107172445A (zh) * 2017-03-31 2017-09-15 武汉斗鱼网络科技有限公司 一种获取数据的方法及装置
CN107659559A (zh) * 2017-08-24 2018-02-02 网易(杭州)网络有限公司 一种游戏系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030003406A (ko) * 2001-06-30 2003-01-10 주식회사 케이티 멀티미디어 서버 시스템에서의 실시간 영상정보 정렬 방법
CN104645615A (zh) * 2015-03-02 2015-05-27 郑州三生石科技有限公司 一种多人线上视频游戏
CN105935492A (zh) * 2016-06-03 2016-09-14 上海慧模智能科技有限公司 游戏设备和交互系统
CN106599251A (zh) * 2016-12-20 2017-04-26 北京小米移动软件有限公司 展示主播排名的方法和装置
CN107172445A (zh) * 2017-03-31 2017-09-15 武汉斗鱼网络科技有限公司 一种获取数据的方法及装置
CN107659559A (zh) * 2017-08-24 2018-02-02 网易(杭州)网络有限公司 一种游戏系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112619165A (zh) * 2020-12-18 2021-04-09 咪咕互动娱乐有限公司 游戏用户选择方法、系统、服务器和存储介质
CN112689154A (zh) * 2020-12-18 2021-04-20 咪咕互动娱乐有限公司 直播控制权交换方法、装置、服务器及存储介质
CN112689154B (zh) * 2020-12-18 2022-08-30 咪咕互动娱乐有限公司 直播控制权交换方法、装置、服务器及存储介质

Similar Documents

Publication Publication Date Title
JP7423134B2 (ja) インタラクティブシーンの起動方法、装置、コンピュータプログラム、クライアント側及びサーバー
CN105791291B (zh) 网络应用的显示控制方法、显示中实时更新的方法和装置
CN107281756A (zh) 一种组队游戏的方法和装置
CN111294663B (zh) 弹幕处理方法、装置、电子设备及计算机可读存储介质
CN107126701B (zh) 直播中添加游戏好友的方法及装置
CN109257631B (zh) 视频轮播播放方法、装置、计算机设备及存储介质
CN107018191B (zh) 一种控制游戏的方法和装置
CN107050850A (zh) 虚拟场景的录制和回放方法、装置以及回放系统
CN109151488B (zh) 根据用户行为实时推荐直播间的方法及系统
CN111611434A (zh) 一种线上课程互动方法及互动平台
WO2023279917A1 (zh) 弹幕显示方法、弹幕发送方法、装置、计算机设备、计算机可读存储介质及计算机程序产品
CN108245896A (zh) 呈现游戏直播的方法、装置、系统、存储介质及设备
CN105472401A (zh) 在网络直播过程中播放广告的方法及系统
CN107426598B (zh) 一种弹幕信息处理方法及注入模块
CN110688234A (zh) 用户排名方法、装置、系统、存储介质
CN107172445B (zh) 一种获取数据的方法及装置
CN107648854B (zh) 一种游戏分类方法、装置及电子设备
CN104915864B (zh) 对投放信息的投放效果进行评测的方法及装置
CN113824983A (zh) 数据匹配方法、装置、设备及计算机可读存储介质
CN108449643B (zh) 一种跨应用控制方法及装置
CN117336564A (zh) 线上演唱会的灯效控制方法、装置、电子设备及介质
CN116980706A (zh) 视频播放方法和装置、存储介质及电子设备
CN111737625A (zh) 媒体资源信息处理方法、处理装置、处理系统及电子设备
CN103491196B (zh) 网页中多媒体地址的获取方法和装置
CN111726701B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200114