CN112118273B - 一种数据交互方法、***及第一客户端 - Google Patents

一种数据交互方法、***及第一客户端 Download PDF

Info

Publication number
CN112118273B
CN112118273B CN201910532982.1A CN201910532982A CN112118273B CN 112118273 B CN112118273 B CN 112118273B CN 201910532982 A CN201910532982 A CN 201910532982A CN 112118273 B CN112118273 B CN 112118273B
Authority
CN
China
Prior art keywords
link
client
identification information
relay
server
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.)
Active
Application number
CN201910532982.1A
Other languages
English (en)
Other versions
CN112118273A (zh
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.)
Hangzhou Ezviz Software Co Ltd
Original Assignee
Hangzhou Ezviz Software 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 Hangzhou Ezviz Software Co Ltd filed Critical Hangzhou Ezviz Software Co Ltd
Priority to CN201910532982.1A priority Critical patent/CN112118273B/zh
Publication of CN112118273A publication Critical patent/CN112118273A/zh
Application granted granted Critical
Publication of CN112118273B publication Critical patent/CN112118273B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供了一种数据交互方法、***及第一客户端。其中,方法包括:向所述P2P服务端发送P2P链接请求,所述P2P链接请求中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二标识信息以及链接标识信息;接收所述P2P服务端反馈的所述第二地址信息;根据所述第二地址信息,与所述第二客户端建立以所述链接标识信息标识的P2P链接;使用所述链接标识信息向所述中继服务端发送第一中继链接请求;通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互。可以实现第一客户端与第二客户端之间端到端的整体数据交互,无需关心P2P链接和中继链接的业务逻辑,具有较强的可拓展性,提高了接入体验。

Description

一种数据交互方法、***及第一客户端
技术领域
本发明涉及数据传输技术领域,特别是涉及一种数据交互方法、***及第一客户端。
背景技术
P2P(Peer to peer,点对点技术),是一种无中心服务器,依靠用户***互信息的互联网体系,能够实现用户之间点对点直接链接。中继服务,是一种通过中继服务端协助用户之间实现间接的点到点通信的服务。
相关技术中,P2P和中继服务往往是通过不同的模块实现的,因此P2P链接和中继链接是相对独立的两个链接,需要分别针对P2P链接和中继链接设置相应的业务逻辑,导致客户端之间数据交互的业务逻辑较为复杂,可拓展性较差,接入体验低。
发明内容
本发明实施例的目的在于提供一种数据交互方法、***及第一客户端,以实现客户端之间端到端的整体数据交互,提高网络的可拓展性。具体技术方案如下:
在本发明实施例的第一方面,提供了一种数据交互方法,应用于数据交互***的第一客户端,所述数据交互***中还包括第二客户端、P2P服务端以及中继服务端,所述P2P服务端对应存储有所述第二客户端的第二标识信息和第二地址信息,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,所述方法包括:
向所述P2P服务端发送P2P链接请求,所述P2P链接请求中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二标识信息以及链接标识信息,由所述P2P服务端根据所述第二标识信息将所述P2P链接请求透传至所述第二客户端,并向所述第一客户端反馈所述第二地址信息,并由所述第二客户端使用所述链接标识信息向所述中继服务端发送第二中继链接请求;
接收所述P2P服务端反馈的所述第二地址信息;
根据所述第二地址信息,与所述第二客户端建立以所述链接标识信息标识的P2P链接;
使用所述链接标识信息向所述中继服务端发送第一中继链接请求,由所述中继服务端匹配所述第一中继链接请求和所述第二中继链接请求,并建立以所述链接标识信息标识的中继链接;
通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互。
在一种可能的实施例中,所述通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互,包括:
确定所述链接标识信息所表示的P2P链接是否正常;
如果所述链接标识信息所表示的P2P链接正常,通过所述链接标识信息所表示的P2P链接,与所述第二客户端进行数据交互;
如果所述链接标识信息所表示的P2P链接异常,通过所述链接标识信息所表示的中继链接,与所述第二客户端进行数据交互。
在一种可能的实施例中,所述通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互,包括:
确定第一链路是否正常,所述第一链路为所述链接标识信息所表示的P2P链接和中继链接中当前正在使用的链路;
如果所述第一链路正常,继续使用所述第一链路与所述第二客户端进行数据交互;
如果所述第一链路异常,通过第二链路与所述第二客户端进行数据交互,所述第二链路为所述链接标识信息所表示的P2P链接和中继链接中不为所述第一链路的链路。
在一种可能的实施例中,所述通过第二链路与所述第二客户端进行数据交互,包括:
根据所述第一链路异常前接收到的最新的收包确认信息,确定所述第二客户端最新接收到的数据包,作为最新数据包,所述收包确认信息为所述第二客户端在接收到所述第一客户端发送的数据包后反馈的用于标识所接收到的数据包的信息;
通过第二链路,从所述最新数据包开始继续与所述第二客户端进行数据交互。
在一种可能的实施例中,所述通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互,包括:
如果通过所述链接标识信息所表示的中继链接与所述第二客户端进行数据交互,当接收到所述中继服务器发送的降速指令后,根据所述降速指令降低与所述第二客户端进行数据交互的交互速率,所述降速指令为所述中继服务器在检测到所述交互速率高于预设速率阈值时发送的。
在本发明实施例的第二方面,提供了一种数据交互方法,应用于数据交互***的第二客户端,所述数据交互***中还包括第一客户端、P2P服务端以及中继服务端,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,所述方法包括:
向所述P2P服务端发送注册报文,所述注册报文中携带有所述第二客户端的第二地址信息和第二标识信息,由所述P2P服务端对应保存所述第二地址信息和所述第二标识信息;
接收P2P链接请求,所述P2P链接请求为所述中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二标识信息以及链接标识信息,所述P2P链接请求为所述第一客户端发送至所述P2P服务端,并由所述P2P服务端根据所述第二标识信息透传至所述第二客户端的,并由所述P2P服务端根据所述第二标识信息向所述第一客户端反馈所述第二地址信息,并由所述第一客户端使用所述链接标识信息向所述中继服务端发送第一中继链接请求;
根据所述第一地址信息,与所述第一客户端建立以所述链接标识信息标识的P2P链接;
使用所述链接标识信息向所述中继服务端发送第二中继链接请求,由所述中继服务端匹配所述第一中继链接请求和所述第二中继链接请求,并建立以所述链接标识信息标识的中继链接;
通过所述链接标识信息所表示的链接,与所述第一客户端进行数据交互。
在一种可能的实施例中,所述通过所述链接标识信息所表示的链接,与所述第一客户端进行数据交互,包括:
在接收到所述第一客户端发送的数据包后,向所述第一客户端反馈收包确认信息,所述收包确认信息用于标识所接收到的数据包,由所述第一客户端在切换与所述第二客户端进行数据交互的链路后,从所述收包确认信息所表示的数据包开始继续与所述第二客户端进行数据交互。
在本发明实施例的第三方面,提供了一种数据交互装置,应用于数据交互***的第一客户端,所述数据交互***中还包括第二客户端、P2P服务端以及中继服务端,所述P2P服务端对应存储有所述第二客户端的第二标识信息和第二地址信息,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,所述装置包括:
P2P请求模块,用于向所述P2P服务端发送P2P链接请求,所述P2P链接请求中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二标识信息以及链接标识信息,由所述P2P服务端根据所述第二标识信息将所述P2P链接请求透传至所述第二客户端,并向所述第一客户端反馈所述第二地址信息,并由所述第二客户端使用所述链接标识信息向所述中继服务端发送第二中继链接请求;
第一接收模块,用于接收所述P2P服务端反馈的所述第二地址信息;
第一P2P链接模块,用于根据所述第二地址信息,与所述第二客户端建立以所述链接标识信息标识的P2P链接;
第一中继请求模块,用于使用所述链接标识信息向所述中继服务端发送第一中继链接请求,由所述中继服务端匹配所述第一中继链接请求和所述第二中继链接请求,并建立以所述链接标识信息标识的中继链接;
第一数据交互模块,用于通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互。
在一种可能的实施例中,所述第一数据交互模块,具体用于确定所述链接标识信息所表示的P2P链接是否正常;
如果所述链接标识信息所表示的P2P链接正常,通过所述链接标识信息所表示的P2P链接,与所述第二客户端进行数据交互;
如果所述链接标识信息所表示的P2P链接异常,通过所述链接标识信息所表示的中继链接,与所述第二客户端进行数据交互。
在一种可能的实施例中,所述第一数据交互模块,具体用于确定第一链路是否正常,所述第一链路为所述链接标识信息所表示的P2P链接和中继链接中当前正在使用的链路;
如果所述第一链路正常,继续使用所述第一链路与所述第二客户端进行数据交互;
如果所述第一链路异常,通过第二链路与所述第二客户端进行数据交互,所述第二链路为所述链接标识信息所表示的P2P链接和中继链接中不为所述第一链路的链路。
在一种可能的实施例中,所述第一数据交互模块,具体用于根据所述第一链路异常前接收到的最新的收包确认信息,确定所述第二客户端最新接收到的数据包,作为最新数据包,所述收包确认信息为所述第二客户端在接收到所述第一客户端发送的数据包后反馈的用于标识所接收到的数据包的信息;
通过第二链路,从所述最新数据包开始继续与所述第二客户端进行数据交互。
在一种可能的实施例中,所述第一数据交互模块,具体用于如果通过所述链接标识信息所表示的中继链接与所述第二客户端进行数据交互,当接收到所述中继服务器发送的降速指令后,根据所述降速指令降低与所述第二客户端进行数据交互的交互速率,所述降速指令为所述中继服务器在检测到所述交互速率高于预设速率阈值时发送的。
在本发明实施例的第四方面,提供了一种数据交互装置,应用于数据交互***的第二客户端,所述数据交互***中还包括第一客户端、P2P服务端以及中继服务端,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,所述装置包括:
向所述P2P服务端发送注册报文,所述注册报文中携带有所述第二客户端的第二地址信息和第二标识信息,由所述P2P服务端对应保存所述第二地址信息和所述第二标识信息;
第二接收模块,用于接收P2P链接请求,所述P2P链接请求为所述中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二标识信息以及链接标识信息,所述P2P链接请求为所述第一客户端发送至所述P2P服务端,并由所述P2P服务端根据所述第二标识信息透传至所述第二客户端的,并由所述P2P服务端根据所述第二标识信息向所述第一客户端反馈所述第二地址信息,并由所述第一客户端使用所述链接标识信息向所述中继服务端发送第一中继链接请求;
第二P2P链接模块,用于根据所述第一地址信息,与所述第一客户端建立以所述链接标识信息标识的P2P链接;
第二中继请求模块,用于使用所述链接标识信息向所述中继服务端发送第二中继链接请求,由所述中继服务端匹配所述第一中继链接请求和所述第二中继链接请求,并建立以所述链接标识信息标识的中继链接;
第二数据交互模块,具体用于通过所述链接标识信息所表示的链接,与所述第一客户端进行数据交互。
在一种可能的实施例中,所述第二数据交互模块,具体用于在接收到所述第一客户端发送的数据包后,向所述第一客户端反馈收包确认信息,所述收包确认信息用于标识所接收到的数据包,由所述第一客户端在切换与所述第二客户端进行数据交互的链路后,从所述收包确认信息所表示的数据包开始继续与所述第二客户端进行数据交互。
在本发明实施例的第五方面,提供了一种数据交互***,所述数据交互***包括第一客户端、第二客户端、P2P服务端以及中继服务端;
所述第二客户端用于向所述P2P服务端发送注册报文,所述注册报文携带有所述第二客户端的第二地址信息和第二标识信息;
所述P2P服务端用于对应保存所述第二地址信息和所述第二标识信息;
所述第一客户端用于向所述P2P服务端发送P2P链接请求,所述P2P链接请求中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二客户端的第二标识信息以及链接标识信息;
所述P2P服务端用于根据所述第二标识信息将所述P2P链接请求透传至所述第二客户端,并向所述第一客户端反馈所述第二地址信息;
所述第二客户端还用于接收所述P2P链接请求;并使用所述链接标识信息向所述中继服务端发送第二中继链接请求;
所述第一客户端还用于接收所述P2P服务端反馈的所述第二地址信息;并根据所述第二地址信息,与所述第二客户端建立以所述链接标识信息标识的P2P链接;
所述第一客户端还用于使用所述链接标识信息向所述中继服务端发送第一中继链接请求;
所述中继服务端用于匹配所述第一中继链接请求和所述第二中继链接请求;并建立所述第一客户端和所述第二客户端之间的以所述链接标识信息标识的中继链接;
所述第一客户端还用于通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互。
在一种可能的实施例中,所述第一客户端具体用于,确定所述链接标识信息所表示的P2P链接是否正常;
如果所述链接标识信息所表示的P2P链接正常,通过所述链接标识信息所表示的P2P链接,与所述第二客户端进行数据交互;
如果所述链接标识信息所表示的P2P链接异常,通过所述链接标识信息所表示的中继链接,与所述第二客户端进行数据交互。
在一种可能的实施例中,所述第一客户端具体用于确定第一链路是否正常,所述第一链路为所述链接标识信息所表示的P2P链接和中继链接中当前正在使用的链路;
如果所述第一链路正常,继续使用所述第一链路与所述第二客户端进行数据交互;
如果所述第一链路异常,通过第二链路与所述第二客户端进行数据交互,所述第二链路为所述链接标识信息所表示的P2P链接和中继链接中不为所述第一链路的链路。
在一种可能的实施中,所述第二客户端具体用于在接收到所述第一客户端发送的数据包后,向所述第一客户端反馈收包确认信息,所述收包确认信息用于标识所接收到的数据包;
所述第一客户端具体用于在根据所述第一链路异常前接收到的最新的收包确认信息,确定所述第二客户端最新接收到的数据包,作为最新数据包;通过第二链路,从所述最新数据包开始继续与所述第二客户端进行数据交互。
在一种可能的实施例中,所述中继服务端还用于检测所述第一客户端与所述第二客户端通过所述中继链接进行数据交互的交互速率;当所述交互速率高于预设速率阈值时,向所述第一客户端和所述第二客户端发送降速指令;
所述第一客户端具体用于当接收到所述中继服务端发送的所述降速指令后,根据所述降速指令降低与所述第二客户端进行数据交互的交互速率。
在本发明实施例的第六方面,提供了一种第一客户端,应用于数据交互***,所述数据交互***中还包括第二客户端、P2P服务端以及中继服务端,所述P2P服务端对应存储有所述第二客户端的第二标识信息和第二地址信息,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,所述第一客户端包括:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的方法步骤。
在本发明实施例提供的第七面,提供了一种第二客户端,应用于数据交互***,所述数据交互***中还包括第一客户端、P2P服务端以及中继服务端,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,所述第二客户端包括:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第二方面任一所述的方法步骤。
在本发明实施例提供的第八方面,提供了一种所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一所述的方法步骤。
在本发明实施例提供的第九方面,提供了一种所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第二方面任一所述的方法步骤。
本发明实施例提供的数据交互方法、***及第一客户端,可以实现在该数据交互***中,第一客户端与第二客户端之间通过链接标识信息所表示的唯一逻辑链接进行数据交互,因此实现了第一客户端与第二客户端之间端到端的整体数据交互,无需关心P2P链接和中继链接的业务逻辑,具有较强的可拓展性,提高了接入体验。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据交互***的一种结构示意图;
图2为本发明实施例提供的数据交互方法的一种流程示意图;
图3为本发明实施例提供的数据交互方法的另一种流程示意图;
图4为本发明实施例提供的数据交互方法的另一种流程示意图;
图5为本发明实施例提供的数据交互装置的一种结构示意图;
图6为本发明实施例提供的数据交互装置的另一种结构示意图;
图7为本发明实施例提供的客户端的一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,图1所示为本发明实施例提供的数据交互***的一种可能的结构示意图,可以包括:第一客户端110、第二客户端120、P2P服务端130以及中继服务端140,其中,P2P服务端130与第一客户端110建立有通信连接,并且与第二客户端120建立有通信连接,中继服务端140与第一客户端110建立有通信连接,并且与第二客户端120建立有通信连接。P2P服务端130和中继服务端140可以是实体服务器,也可以是虚拟服务器,第一客户端110和第二客户端120根据应用场景的不同可以不同,示例性的,在一种可能的实施例中,第一客户端110可以是运行于用户终端上的web端,第二客户端可以是运行于监控设备上的设备端,本实施例对此不做限制。
参见图2,图2所示为本发明实施例提供的数据交互方法的一种流程示意图,该方法可以应用于第一客户端,在该实施例中P2P服务端存储有第二客户端的第二地址信息和第二标识信息,方法包括:
S201,向P2P服务端发送P2P链接请求。
其中,P2P链接请求中携带有第一客户端的第一地址信息、中继服务端的中继地址信息、第二标识信息以及链接标识信息。P2P服务端在接收到该P2P链接请求后,可以根据第二标识信息,将该P2P链接请求透传至第二客户端,并向第一客户端反馈第二地址信息。第二客户端在接收到P2P服务端透传的P2P链接请求后,可以使用该链接标识信息向中继服务端发送第二中继链接请求。
S202,接收P2P服务端反馈的第二地址信息。
可以理解的是,由于P2P链接请求中携带有第二标识信息,因此P2P服务端可以根据第二标识信息匹配到第二地址信息,并向第一客户端反馈第二地址信息。
S203,根据第二地址信息,与第二客户端建立以链接标识信息标识的P2P链接。
由于在S201中,P2P链接请求通过P2P服务端透传至第二客户端,因此第二客户端已经获取到了第一客户端的第一地址信息,而S202中第一客户端获取到P2P服务端反馈的第二地址信息,即第一客户端和第二客户端已经相互获取到对方的地址信息,因此第一客户端可以和第二客户端建立P2P链接。
S204,使用链接标识信息向中继服务端发送第一中继链接请求。
可以理解的是,图2所示仅为本发明实施例提供的数据交互方法的一种可能的实施例,在其他可能的实施例中,S204也可以是在S201、S202或者S203之前执行的,还可以是与S201、S202或者S203并行执行,还可以是与S201、S202或者S203交替执行的,本实施例对此不做限制。
由于第二客户端在接收到P2P连接请求后,可以使用P2P连接所携带的链接标识信息向所述中继服务端发送第二中继链接请求。对于中继服务端,所接收到的第二中继链接请求和第一中继链接请求使用相同的链接标识信息,因此中继服务端可以将第一中继链接请求和第二中继链接请求相匹配,以建立第一客户端和第二客户端之间的中继链接。
S205,通过链接标识信息所表示的链接,与第二客户端进行数据交互。
在不考虑第一客户端与第二客户端之间的P2P链接建立失败的情况下,链接标识信息所表示的链接包括P2P链接和中继链接,这两个物理链接使用同一个链接标识信息表示,因此对外这两个链接可以视为同一个逻辑链接中的两个物理链接,即在该数据交互***中,第一客户端与第二客户端之间通过链接标识信息所表示的唯一逻辑链接进行数据交互,因此实现了第一客户端与第二客户端之间端到端的整体数据交互,无需关心P2P链接和中继链接的业务逻辑,具有较强的可拓展性,提高了接入体验。
为更清楚的对本发明实施例提供的数据交互方法进行说明,下面将结合数据交互***中的第一客户端、第二客户端、P2P服务端以及中继服务端进行说明。可以参见图3,包括:
S301,第二客户端上线后,向P2P服务端发送注册报文。
其中,注册报文中携带有第二客户端的第二地址信息和第二标识信息。
S302,P2P服务端在接收到注册报文后,对应保存所携带的第二地址信息和第二标识信息。
示例性的,可以是将第二地址信息和第二标识信息以二元组的形式保存,并将第二标识信息作为该二元组的索引。
S303,第一客户端向P2P服务端发送P2P链接请求。
关于P2P链接请求,可以参见S101中的相关描述,在此不再赘述。
S304,P2P服务端在接收到P2P链接请求后,解析P2P请求所携带的第二标识信息。
S305,P2P服务端根据解析到的第二标识信息,匹配本地保存的第二地址信息。
对于P2P服务端,与第二标识信息对应保存的为第二地址信息,因此根据解析到的第二标识信息,匹配到的地址信息为第二地址信息。
S306,P2P服务端向第一客户端反馈第二地址信息。
S307,P2P服务端根据匹配到的第二地址信息,将P2P链接请求透传至第二客户端。
在其他可能的实施例中,S307也可以是在S306之前执行的,还可以是与S306并行执行或交替执行,本实施例对此不做限制。
S308,第二客户端在接收到P2P链接请求后,根据所携带的第一地址信息,与第一客户端建立P2P链接。
S309,第二客户端根据P2P链接请求所携带的中继地址信息和链接标识信息,使用该链接标识信息向中继服务端发送第二中继链接请求。
S310,第一客户端使用该链接标识信息向中继服务端发送第一中继链接请求。
在其他可能的实施例中,S310也可以是在S301-S309中任一步骤之前执行的,还可以是与S301-S309中任一步骤并行执行或交替执行,本实施例对此不做限制。
S311,中继服务端在接收到第一中继链接请求和第二中继链接请求后,协助建立第一客户端与第二客户端之间的中继链接。
由于第一中继链接请求和第二中继链接请求所使用的链接标识信息相同,因此中继服务端可以将第一中继链接请求和第二中继链接请求匹配,进而协助建立第一客户端和第二客户端之间的中继链接。可以理解的是,成功建立得到的中继链接可以是以链接标识信息表示的。
S312,第一客户端和第二客户端通过链接标识信息所表示的链路进行数据交互。
下面将分别对一种可能的实施例中,P2P服务端、中继服务端以及第二客户端对报文/请求的执行逻辑进行说明。
对于P2P服务端,可以接收到第一客户端发送的P2P链接请求。在接收到P2P链接请求后,可以解析该P2P链接请求所携带的标识信息和地址信息,得到第一地址信息和第二标识信息,根据第二标识信息匹配本地保存的地址信息,得到第二地址信息。根据第一地址信息,向第一客户端发送第二地址信息。并根据第二地址信息,向第二客户端透传P2P链接请求。
对于P2P服务端,还可以接收到第二客户端发送的注册报文。在接收到注册报文后,可以解析该注册报文所携带的标识信息和地址信息,得到第二标识信息和第二地址信息,并对应保存第二标识信息和第二地址信息。
对于中继服务端,可以接收到第一客户端和第二客户端发送的中继链接请求。在接收到中继链接请求后,中继服务端可以解析该中继链接请求所携带的链接标识信息,并确定是否存在其他中继链接请求具有相同的链接标识信息,如果存在其他中继链接请求具有相同的链接标识信息,则协助建立发送该中继链接请求的客户端,和发送该其他中继链接请求的客户端之间的中继链接。
对于第二客户端,可以接收到P2P服务端透传的P2P链接请求。在接收到P2P链接请求后,可以解析得到P2P链接请求中所携带的第一地址信息,中继地址信息以及链接标识信息,根据第一地址信息与第一客户端建立P2P链接请求,并根据中继地址信息,使用链接标识信息向中继服务端发送第二中继链接请求。
可以理解的是,如果第一客户端和第二客户端通过链接标识信息所表示的中继链接进行数据交互,需要占用中继服务端一定的带宽。在可能的实施例中,出于降低中继服务端带宽消耗的考虑,可以在链接标识信息所表示的P2P链接正常时,第一客户端和第二客户端优先通过P2P链接进行数据交互。
示例性的,当第一客户端向第二客户端发送报文时,可以确定链接标识信息所表示的P2P链接是否正常,如果该P2P链接正常,则通过该P2P链接向第二客户端发送报文,如果该P2P链接异常,则通过中继链接向第二客户端发送报文。同理,当第二客户端向第一客户端发送报文时,可以确定链接标识信息所表示的P2P链接是否正常,如果该P2P链接正常,则通过该P2P链接向第一客户端发送报文,如果该P2P链接异常,则通过中继链接向第一客户端发送报文
由于第一客户端和第二客户端可以视为对等的两个客户端,因此下文中仅以第一客户端向第二客户端发送报文为例,对第一客户端和第二客户端之间的数据交互进行描述,第二客户端向第一客户端发送报文原理是相同的,因此不再赘述。
P2P链接和中继链接出于一些特殊原因,在使用过程中可能异常。为描述方便,下文将第一客户端和第二客户端进行数据交互时当前正在使用的链接称为第一链接,不正在使用的链接的称为第二链接。示例性的,假设第一客户端正在使用P2P链接与第二客户端进行数据交互,则P2P链接为第一链接,中继链接为第二链接。
在一种可能的实施例中,当第一链接异常时,可以通过第二链接继续数据交互。但是,从第一链接切换至第二链接的过程中,可能造成数据丢失,例如,第一客户端需要向第二客户端发送数据包1-10,并且已经发送出了数据包1-6,但是数据包6尚未被第二客户端接收到,此时第一链接异常,第一客户端和第二客户端通过第二链路继续进行数据交互,则第一客户端可能从数据包7开始继续发送,导致第二客户端没有成功接收到数据包6。
有鉴于此,在一种可能的实施例中,第二客户端在接收到第一客户端发送的数据包后,向第一客户端反馈用于表示该数据包的收包确认信息,第一客户端在第一链路异常后,第一客户端确定最新接收到的收包确认信息所表示的数据包,作为最新数据包,并通过第二链接从最新数据包开始继续向第二客端发送数据包。
示例性的,为描述方便,假设第一链接为P2P链接,第二链接为中继链接,第一客户端需要向第二客户端发送数据包1-5。则可以参见图4,包括:
S401,第一客户端通过P2P链接向第二客户端发送数据包1-5。
假设由于第一链接异常,第二客户端通过第一链接只接收到其中的数据包1-3。
S402,第二客户端向第一客户端反馈收包确认信息,该收包确认信息中携带有数据包3的标识信息。
第二客户端反馈收包确认信息,可以是在接收到每个数据包后执行的,也可以是每接收到预设数目个数据包后执行的,还可以是在间隔上次反馈收包确认信息预设时长后,再次接收到数据包后执行的。
例如,第二客户端可以是在接收到数据包1后,反馈携带有数据包1的标识信息的收包确认信息。在接收到数据包2后,反馈携带有数据包2的标识信息的收包确认信息。在接收到数据包3后,反馈携带有数据包3的标识信息的收包确认信息。
又例如,第二客户端可以是每接收到3个数据包后,反馈收包确认信息。则第二客户端在接收到数据包1、数据包2后不反馈收包确认信息,在接收到数据包3后反馈携带有数据包3的标识信息的收包确认信息。
又例如,第二客户端反馈收包确认信息的最小间隔可以为10ms,则假设t=0ms时,第二客户端接收到数据包1,并反馈携带有数据包1的标识信息的收包确认信息,t=6ms时,第二客户端接收到数据包2,则第二客户端不反馈收包确认信息,t=12ms时,第二客户端接收到数据包3,由于此时距离上次反馈收包确认信息已经超过10ms,因此第二客户端反馈携带有数据包3的标识信息的收包确认信息。
S403,第一客户端在检测到P2P链接异常后,根据第二客户端反馈的收包确认信息,确定数据包3为目标数据包。
S404,第一客户端通过中继链接,从数据包3开始,继续向第二客户端发送数据包4、数据包5。
可以理解的是,该实施例中,从数据包3开始可以是指不包括数据包3在内。在其他可能的实施例中,由于第二客户端反馈收包确认信息的逻辑不同,第一客户端最新接收到的收包确认信息所表示的数据包,可能并非第二客户端最新接收到的数据包,在这些应用场景中,可能会使得第一客户端向第二客户端发送重复的数据包。有鉴于此,在一些应用场景中,第二客户端可以对接收到的数据包进行过滤,以避免接收到重复的数据。
示例性的,假设第一客户端通过第一链接向第二客户端成功发送数据包1-4后第一链接异常,由于第二客户端反馈收包确认信息是每收到3个数据包反馈一次,则第一客户端最新接收到的最新的收包确认信息携带的是数据包3的标识信息,因此第一客户端可以通过中继链接,继续向第二客户端发送数据包4、5,第二客户端由于已经接收过数据包4,因此可以丢弃本次接收到的数据包4。
如前述分析,第一客户端和第二客户端通过中继链接进行数据交互,可能导致该中继服务端产生较大的带宽压力。有鉴于此,在一种可能的实施例中,当中继服务端在检测到第一客户端和第二客户端之间通过中继连接的交互速率高于预设速率阈值时,可以向第一客户端和/或第二客户端发送降速指令,第一客户端和/或第二客户端在接收到降速指令后,根据降速指令降低交互速率。
示例性的,假设中继服务端的最大带宽为10Mbps,预设交互速率阈值为4Mbps,当第一客户端和第二客户端通过中继链接进行的数据交互的交互速率为6Mbps,则可以是向第一客户端和第二客户端发送降速指令,以将第一客户端和第二客户端之间的交互速率降低至4Mbps以下。
降低方式根据应用场景的不同可以不同,示例性的,可以是将当前的交互速率调整为原先的(预设速率阈值/中继服务端最大带宽)倍,假设中继服务端的最大带宽为10Mbps,预设交互速率阈值为4Mbps,则可以是将交互速率降低至原先的0.4倍,即如果原先的交互速率为6Mpbs,则降低后的交互速率为2.4Mbps。
参见图5,图5所示为本发明实施例提供的数据交互装置的一种结构示意图,应用于数据交互***的第一客户端,所述数据交互***中还包括第二客户端、P2P服务端以及中继服务端,所述P2P服务端对应存储有所述第二客户端的第二标识信息和第二地址信息,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,装置可以包括:
P2P请求模块501,用于向所述P2P服务端发送P2P链接请求,所述P2P链接请求中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二标识信息以及链接标识信息,由所述P2P服务端根据所述第二标识信息将所述P2P链接请求透传至所述第二客户端,并向所述第一客户端反馈所述第二地址信息,并由所述第二客户端使用所述链接标识信息向所述中继服务端发送第二中继链接请求;
第一接收模块502,用于接收所述P2P服务端反馈的所述第二地址信息;
第一P2P链接模块503,用于根据所述第二地址信息,与所述第二客户端建立以所述链接标识信息标识的P2P链接;
第一中继请求模块504,用于使用所述链接标识信息向所述中继服务端发送第一中继链接请求,由所述中继服务端匹配所述第一中继链接请求和所述第二中继链接请求,并建立以所述链接标识信息标识的中继链接;
第一数据交互模块505,用于通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互。
在一种可能的实施例中,所述第一数据交互模块,具体用于确定所述链接标识信息所表示的P2P链接是否正常;
如果所述链接标识信息所表示的P2P链接正常,通过所述链接标识信息所表示的P2P链接,与所述第二客户端进行数据交互;
如果所述链接标识信息所表示的P2P链接异常,通过所述链接标识信息所表示的中继链接,与所述第二客户端进行数据交互。
在一种可能的实施例中,所述第一数据交互模块,具体用于确定第一链路是否正常,所述第一链路为所述链接标识信息所表示的P2P链接和中继链接中当前正在使用的链路;
如果所述第一链路正常,继续使用所述第一链路与所述第二客户端进行数据交互;
如果所述第一链路异常,通过第二链路与所述第二客户端进行数据交互,所述第二链路为所述链接标识信息所表示的P2P链接和中继链接中不为所述第一链路的链路。
在一种可能的实施例中,所述第一数据交互模块,具体用于根据所述第一链路异常前接收到的最新的收包确认信息,确定所述第二客户端最新接收到的数据包,作为最新数据包,所述收包确认信息为所述第二客户端在接收到所述第一客户端发送的数据包后反馈的用于标识所接收到的数据包的信息;
通过第二链路,从所述最新数据包开始继续与所述第二客户端进行数据交互。
在一种可能的实施例中,所述第一数据交互模块,具体用于如果通过所述链接标识信息所表示的中继链接与所述第二客户端进行数据交互,当接收到所述中继服务器发送的降速指令后,根据所述降速指令降低与所述第二客户端进行数据交互的交互速率,所述降速指令为所述中继服务器在检测到所述交互速率高于预设速率阈值时发送的。
参见图6,图6所示为本发明实施例提供的数据交互装置的另一种可能的结构示意图,应用于数据交互***的第二客户端,所述数据交互***中还包括第一客户端、P2P服务端以及中继服务端,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,装置可以包括:
报文注册模块601,用于向所述P2P服务端发送注册报文,所述注册报文中携带有所述第二客户端的第二地址信息和第二标识信息,由所述P2P服务端对应保存所述第二地址信息和所述第二标识信息;
第二接收模块602,用于接收P2P链接请求,所述P2P链接请求为所述中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二标识信息以及链接标识信息,所述P2P链接请求为所述第一客户端发送至所述P2P服务端,并由所述P2P服务端根据所述第二标识信息透传至所述第二客户端的,并由所述P2P服务端根据所述第二标识信息向所述第一客户端反馈所述第二地址信息,并由所述第一客户端使用所述链接标识信息向所述中继服务端发送第一中继链接请求;
第二P2P链接模块603,用于根据所述第一地址信息,与所述第一客户端建立以所述链接标识信息标识的P2P链接;
第二中继请求模块604,用于使用所述链接标识信息向所述中继服务端发送第二中继链接请求,由所述中继服务端匹配所述第一中继链接请求和所述第二中继链接请求,并建立以所述链接标识信息标识的中继链接;
第二数据交互模块605,具体用于通过所述链接标识信息所表示的链接,与所述第一客户端进行数据交互。
在一种可能的应用场景中,第二数据交互模块,具体用于在接收到第一客户端发送的数据包后,向第一客户端反馈收包确认信息,收包确认信息用于标识所接收到的数据包,由第一客户端在切换与第二客户端进行数据交互的链路后,从收包确认信息所表示的数据包开始继续与第二客户端进行数据交互。
下面将对本发明实施例提供的数据交互***进行整体的描述,可以参见图1,包括第一客户端110、第二客户端120、P2P服务端130以及中继服务端140;
第二客户端120用于向P2P服务端130发送注册报文,注册报文携带有第二客户端120的第二地址信息和第二标识信息;
P2P服务端130用于对应保存第二地址信息和第二标识信息;
第一客户端110用于向P2P服务端130发送P2P链接请求,P2P链接请求中携带有第一客户端110的第一地址信息、中继服务端140的中继地址信息、第二客户端120的第二标识信息以及链接标识信息;
P2P服务端130用于根据第二标识信息将P2P链接请求透传至第二客户端120,并向第一客户端110反馈第二地址信息;
第二客户端120还用于接收P2P链接请求;并使用链接标识信息向中继服务端140发送第二中继链接请求;
第一客户端110还用于接收P2P服务端130反馈的第二地址信息;并根据第二地址信息,与第二客户端120建立以链接标识信息标识的P2P链接;
第一客户端110还用于使用链接标识信息向中继服务端140发送第一中继链接请求;
中继服务端140用于匹配第一中继链接请求和第二中继链接请求;并建立第一客户端110和第二客户端120之间的以链接标识信息标识的中继链接;
第一客户端110还用于通过链接标识信息所表示的链接,与第二客户端120进行数据交互。
在一种可能的实施例中,第一客户端110具体用于,确定链接标识信息所表示的P2P链接是否正常;
如果链接标识信息所表示的P2P链接正常,通过链接标识信息所表示的P2P链接,与第二客户端120进行数据交互;
如果链接标识信息所表示的P2P链接异常,通过链接标识信息所表示的中继链接,与第二客户端120进行数据交互。
在一种可能的实施例中,第一客户端110具体用于确定第一链路是否正常,第一链路为链接标识信息所表示的P2P链接和中继链接中当前正在使用的链路;
如果第一链路正常,继续使用第一链路与第二客户端120进行数据交互;
如果第一链路异常,通过第二链路与第二客户端120进行数据交互,第二链路为链接标识信息所表示的P2P链接和中继链接中不为第一链路的链路。
在一种可能的实施例中,第二客户端120具体用于在接收到第一客户端110发送的数据包后,向第一客户端110反馈收包确认信息,收包确认信息用于标识所接收到的数据包;
第一客户端110具体用于在根据第一链路异常前接收到的最新的收包确认信息,确定第二客户端120最新接收到的数据包,作为最新数据包;通过第二链路,从最新数据包开始继续与第二客户端120进行数据交互。
在一种可能的实施例中,中继服务端140还用于检测第一客户端110与第二客户端120通过中继链接进行数据交互的交互速率;当交互速率高于预设速率阈值时,向第一客户端110和/或第二客户端120发送降速指令;
第一客户端110和/或第二客户端120具体用于当接收到中继服务端140发送的降速指令后,根据降速指令降低与第二客户端120进行数据交互的交互速率。
本发明实施例还提供了一种客户端,如图7所示,包括:
存储器701,用于存放计算机程序;
处理器702,用于执行存储器701上所存放的程序时,当该客户端为第一客户端时,可以实现如下步骤:
向P2P服务端发送P2P链接请求,P2P链接请求中携带有第一客户端的第一地址信息、中继服务端的中继地址信息、第二标识信息以及链接标识信息,由P2P服务端根据第二标识信息将P2P链接请求透传至第二客户端,并向第一客户端反馈第二地址信息,并由第二客户端使用链接标识信息向中继服务端发送第二中继链接请求;
接收P2P服务端反馈的第二地址信息;
根据第二地址信息,与第二客户端建立以链接标识信息标识的P2P链接;
使用链接标识信息向中继服务端发送第一中继链接请求,由中继服务端匹配第一中继链接请求和第二中继链接请求,并建立以链接标识信息标识的中继链接;
通过链接标识信息所表示的链接,与第二客户端进行数据交互。
在一种可能的实施例中,通过链接标识信息所表示的链接,与第二客户端进行数据交互,包括:
确定链接标识信息所表示的P2P链接是否正常;
如果链接标识信息所表示的P2P链接正常,通过链接标识信息所表示的P2P链接,与第二客户端进行数据交互;
如果链接标识信息所表示的P2P链接异常,通过链接标识信息所表示的中继链接,与第二客户端进行数据交互。
在一种可能的实施例中,通过链接标识信息所表示的链接,与第二客户端进行数据交互,包括:
确定第一链路是否正常,第一链路为链接标识信息所表示的P2P链接和中继链接中当前正在使用的链路;
如果第一链路正常,继续使用第一链路与第二客户端进行数据交互;
如果第一链路异常,通过第二链路与第二客户端进行数据交互,第二链路为链接标识信息所表示的P2P链接和中继链接中不为第一链路的链路。
在一种可能的实施例中,通过第二链路与第二客户端进行数据交互,包括:
根据第一链路异常前接收到的最新的收包确认信息,确定第二客户端最新接收到的数据包,作为最新数据包,收包确认信息为第二客户端在接收到第一客户端发送的数据包后反馈的用于标识所接收到的数据包的信息;
通过第二链路,从最新数据包开始继续与第二客户端进行数据交互。
在一种可能的实施例中,通过链接标识信息所表示的链接,与第二客户端进行数据交互,包括:
如果通过链接标识信息所表示的中继链接与第二客户端进行数据交互,当接收到中继服务器发送的降速指令后,根据降速指令降低与第二客户端进行数据交互的交互速率,降速指令为中继服务器在检测到交互速率高于预设速率阈值时发送的。
如果该客户端为第二客户端,则可以是实现:
向P2P服务端发送注册报文,注册报文中携带有第二客户端的第二地址信息和第二标识信息,由P2P服务端对应保存第二地址信息和第二标识信息;
接收P2P链接请求,P2P链接请求为中携带有第一客户端的第一地址信息、中继服务端的中继地址信息、第二标识信息以及链接标识信息,P2P链接请求为第一客户端发送至P2P服务端,并由P2P服务端根据第二标识信息透传至第二客户端的,并由P2P服务端根据第二标识信息向第一客户端反馈第二地址信息,并由第一客户端使用链接标识信息向中继服务端发送第一中继链接请求;
根据第一地址信息,与第一客户端建立以链接标识信息标识的P2P链接;
使用链接标识信息向中继服务端发送第二中继链接请求,由中继服务端匹配第一中继链接请求和第二中继链接请求,并建立以链接标识信息标识的中继链接;
通过链接标识信息所表示的链接,与第一客户端进行数据交互。
在一种可能的实施例中,通过链接标识信息所表示的链接,与第一客户端进行数据交互,包括:
在接收到第一客户端发送的数据包后,向第一客户端反馈收包确认信息,收包确认信息用于标识所接收到的数据包,由第一客户端在切换与第二客户端进行数据交互的链路后,从收包确认信息所表示的数据包开始继续与第二客户端进行数据交互。
上述电子设备提到的存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一数据交互方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据交互方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、***、第一客户端、第二客户端、计算机可读存储介质以及计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (16)

1.一种数据交互方法,其特征在于,应用于数据交互***的第一客户端,所述数据交互***中还包括第二客户端、P2P服务端以及中继服务端,所述P2P服务端对应存储有所述第二客户端的第二标识信息和第二地址信息,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,所述方法包括:
向所述P2P服务端发送P2P链接请求,所述P2P链接请求中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二标识信息以及链接标识信息,由所述P2P服务端根据所述第二标识信息将所述P2P链接请求透传至所述第二客户端,并向所述第一客户端反馈所述第二地址信息,并由所述第二客户端使用所述链接标识信息向所述中继服务端发送第二中继链接请求;
接收所述P2P服务端反馈的所述第二地址信息;
根据所述第二地址信息,与所述第二客户端建立以所述链接标识信息标识的P2P链接;
使用所述链接标识信息向所述中继服务端发送第一中继链接请求,由所述中继服务端匹配所述第一中继链接请求和所述第二中继链接请求,并建立以所述链接标识信息标识的中继链接;
通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互。
2.根据权利要求1所述的方法,其特征在于,所述通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互,包括:
确定所述链接标识信息所表示的P2P链接是否正常;
如果所述链接标识信息所表示的P2P链接正常,通过所述链接标识信息所表示的P2P链接,与所述第二客户端进行数据交互;
如果所述链接标识信息所表示的P2P链接异常,通过所述链接标识信息所表示的中继链接,与所述第二客户端进行数据交互。
3.根据权利要求1所述的方法,其特征在于,所述通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互,包括:
确定第一链路是否正常,所述第一链路为所述链接标识信息所表示的P2P链接和中继链接中当前正在使用的链路;
如果所述第一链路正常,继续使用所述第一链路与所述第二客户端进行数据交互;
如果所述第一链路异常,通过第二链路与所述第二客户端进行数据交互,所述第二链路为所述链接标识信息所表示的P2P链接和中继链接中不为所述第一链路的链路。
4.根据权利要求3所述的方法,其特征在于,所述通过第二链路与所述第二客户端进行数据交互,包括:
根据所述第一链路异常前接收到的最新的收包确认信息,确定所述第二客户端最新接收到的数据包,作为最新数据包,所述收包确认信息为所述第二客户端在接收到所述第一客户端发送的数据包后反馈的用于标识所接收到的数据包的信息;
通过第二链路,从所述最新数据包开始继续与所述第二客户端进行数据交互。
5.根据权利要求1所述的方法,其特征在于,所述通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互,包括:
如果通过所述链接标识信息所表示的中继链接与所述第二客户端进行数据交互,当接收到所述中继服务端发送的降速指令后,根据所述降速指令降低与所述第二客户端进行数据交互的交互速率,所述降速指令为所述中继服务器在检测到所述交互速率高于预设速率阈值时发送的。
6.一种数据交互方法,其特征在于,应用于数据交互***的第二客户端,所述数据交互***中还包括第一客户端、P2P服务端以及中继服务端,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,所述方法包括:
向所述P2P服务端发送注册报文,所述注册报文中携带有所述第二客户端的第二地址信息和第二标识信息,由所述P2P服务端对应保存所述第二地址信息和所述第二标识信息;
接收P2P链接请求,所述P2P链接请求为所述中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二标识信息以及链接标识信息,所述P2P链接请求为所述第一客户端发送至所述P2P服务端,并由所述P2P服务端根据所述第二标识信息透传至所述第二客户端的,并由所述P2P服务端根据所述第二标识信息向所述第一客户端反馈所述第二地址信息,并由所述第一客户端使用所述链接标识信息向所述中继服务端发送第一中继链接请求;
根据所述第一地址信息,与所述第一客户端建立以所述链接标识信息标识的P2P链接;
使用所述链接标识信息向所述中继服务端发送第二中继链接请求,由所述中继服务端匹配所述第一中继链接请求和所述第二中继链接请求,并建立以所述链接标识信息标识的中继链接;
通过所述链接标识信息所表示的链接,与所述第一客户端进行数据交互。
7.根据权利要求6所述的方法,其特征在于,所述通过所述链接标识信息所表示的链接,与所述第一客户端进行数据交互,包括:
在接收到所述第一客户端发送的数据包后,向所述第一客户端反馈收包确认信息,所述收包确认信息用于标识所接收到的数据包,由所述第一客户端在切换与所述第二客户端进行数据交互的链路后,从所述收包确认信息所表示的数据包开始继续与所述第二客户端进行数据交互。
8.一种数据交互***,其特征在于,所述数据交互***包括第一客户端、第二客户端、P2P服务端以及中继服务端;
所述第二客户端用于向所述P2P服务端发送注册报文,所述注册报文携带有所述第二客户端的第二地址信息和第二标识信息;
所述P2P服务端用于对应保存所述第二地址信息和所述第二标识信息;
所述第一客户端用于向所述P2P服务端发送P2P链接请求,所述P2P链接请求中携带有所述第一客户端的第一地址信息、所述中继服务端的中继地址信息、所述第二客户端的第二标识信息以及链接标识信息;
所述P2P服务端用于根据所述第二标识信息将所述P2P链接请求透传至所述第二客户端,并向所述第一客户端反馈所述第二地址信息;
所述第二客户端还用于接收所述P2P链接请求;并使用所述链接标识信息向所述中继服务端发送第二中继链接请求;
所述第一客户端还用于接收所述P2P服务端反馈的所述第二地址信息;并根据所述第二地址信息,与所述第二客户端建立以所述链接标识信息标识的P2P链接;
所述第一客户端还用于使用所述链接标识信息向所述中继服务端发送第一中继链接请求;
所述中继服务端用于匹配所述第一中继链接请求和所述第二中继链接请求;并建立所述第一客户端和所述第二客户端之间的以所述链接标识信息标识的中继链接;
所述第一客户端还用于通过所述链接标识信息所表示的链接,与所述第二客户端进行数据交互。
9.根据权利要求8所述的***,其特征在于,所述第一客户端具体用于,确定所述链接标识信息所表示的P2P链接是否正常;
如果所述链接标识信息所表示的P2P链接正常,通过所述链接标识信息所表示的P2P链接,与所述第二客户端进行数据交互;
如果所述链接标识信息所表示的P2P链接异常,通过所述链接标识信息所表示的中继链接,与所述第二客户端进行数据交互。
10.根据权利要求8所述的***,其特征在于,所述第一客户端具体用于确定第一链路是否正常,所述第一链路为所述链接标识信息所表示的P2P链接和中继链接中当前正在使用的链路;
如果所述第一链路正常,继续使用所述第一链路与所述第二客户端进行数据交互;
如果所述第一链路异常,通过第二链路与所述第二客户端进行数据交互,所述第二链路为所述链接标识信息所表示的P2P链接和中继链接中不为所述第一链路的链路。
11.根据权利要求10所述的***,其特征在于,所述第二客户端具体用于在接收到所述第一客户端发送的数据包后,向所述第一客户端反馈收包确认信息,所述收包确认信息用于标识所接收到的数据包;
所述第一客户端具体用于在根据所述第一链路异常前接收到的最新的收包确认信息,确定所述第二客户端最新接收到的数据包,作为最新数据包;通过第二链路,从所述最新数据包开始继续与所述第二客户端进行数据交互。
12.根据权利要求8所述的***,其特征在于,所述中继服务端还用于检测所述第一客户端与所述第二客户端通过所述中继链接进行数据交互的交互速率;当所述交互速率高于预设速率阈值时,向所述第一客户端和所述第二客户端发送降速指令;
所述第一客户端具体用于当接收到所述中继服务端发送的所述降速指令后,根据所述降速指令降低与所述第二客户端进行数据交互的交互速率。
13.一种第一客户端,其特征在于,应用于数据交互***,所述数据交互***中还包括第二客户端、P2P服务端以及中继服务端,所述P2P服务端对应存储有所述第二客户端的第二标识信息和第二地址信息,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,所述第一客户端包括:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
14.一种第二客户端,其特征在于,应用于数据交互***,所述数据交互***中还包括第一客户端、P2P服务端以及中继服务端,所述P2P服务端与所述第一客户端、所述第二客户端建立有通信连接,所述中继服务端与所述第一客户端、所述第二客户端建立有通信连接,所述第二客户端包括:
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求6-7任一所述的方法步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求6-7任一所述的方法步骤。
CN201910532982.1A 2019-06-19 2019-06-19 一种数据交互方法、***及第一客户端 Active CN112118273B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910532982.1A CN112118273B (zh) 2019-06-19 2019-06-19 一种数据交互方法、***及第一客户端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910532982.1A CN112118273B (zh) 2019-06-19 2019-06-19 一种数据交互方法、***及第一客户端

Publications (2)

Publication Number Publication Date
CN112118273A CN112118273A (zh) 2020-12-22
CN112118273B true CN112118273B (zh) 2023-04-07

Family

ID=73796713

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910532982.1A Active CN112118273B (zh) 2019-06-19 2019-06-19 一种数据交互方法、***及第一客户端

Country Status (1)

Country Link
CN (1) CN112118273B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101437036A (zh) * 2008-12-22 2009-05-20 北京中企开源信息技术有限公司 支持nat/防火墙穿越的文件传输方法和***
WO2011126509A1 (en) * 2010-04-07 2011-10-13 Apple Inc. Apparatus and method for establishing and utilizing backup communication channels
CN104519414A (zh) * 2013-09-27 2015-04-15 北京新媒传信科技有限公司 一种流媒体传输的方法和***
US10129412B1 (en) * 2014-09-08 2018-11-13 Whatsapp Inc. Establishing and maintaining a VOIP call

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015041947A (ja) * 2013-08-23 2015-03-02 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
TWI599201B (zh) * 2016-02-05 2017-09-11 物聯智慧科技(深圳)有限公司 網路系統及建立資料連線的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101437036A (zh) * 2008-12-22 2009-05-20 北京中企开源信息技术有限公司 支持nat/防火墙穿越的文件传输方法和***
WO2011126509A1 (en) * 2010-04-07 2011-10-13 Apple Inc. Apparatus and method for establishing and utilizing backup communication channels
CN104519414A (zh) * 2013-09-27 2015-04-15 北京新媒传信科技有限公司 一种流媒体传输的方法和***
US10129412B1 (en) * 2014-09-08 2018-11-13 Whatsapp Inc. Establishing and maintaining a VOIP call

Also Published As

Publication number Publication date
CN112118273A (zh) 2020-12-22

Similar Documents

Publication Publication Date Title
US9872198B2 (en) Systems and methods for data transmission
US10645145B2 (en) Method and apparatus for accelerating data transmission in a network communication system
US20150215400A1 (en) File Upload Method And System
CN115004673B (zh) 消息推送方法、装置、电子设备及计算机可读介质
CN106598633B (zh) 配置文件的更新方法、客户端及服务器
WO2014166265A1 (en) Method, terminal, cache server and system for updating webpage data
WO2016127884A1 (zh) 消息推送方法及装置
CN109040295B (zh) 异常断线的确定方法及装置、终端及存储介质
CN113986501A (zh) 实时数据库api无中断调用方法、***、存储介质及服务器
US8650313B2 (en) Endpoint discriminator in network transport protocol startup packets
US10412778B2 (en) Data transmission method and apparatus for data service
CN108124504B (zh) Tfo传输方法、代理服务器和***
CN112118273B (zh) 一种数据交互方法、***及第一客户端
CN108259576B (zh) 一种软硬件实时信息传输***和方法
CN114338477B (zh) 一种通信链路监控方法、装置、设备及存储介质
CN113259490B (zh) 基于udp传输协议的多级节点网络数据传输方法
CN114489730A (zh) 一种远程升级方法及其终端设备、计算机可读存储介质
CN113079055B (zh) 一种agv运行数据的动态采集方法和装置
CN109688204B (zh) 基于ndn网络的文件下载方法、节点、终端
CN107465751B (zh) 通信方法、装置、客户端及计算机存储介质
CN111404827A (zh) 一种数据包处理方法、装置及电子设备和存储介质
CN106992878B (zh) 一种组播检测的方法及装置
CN110881213A (zh) 一种网络测试过程信息的传输方法及***
CN113271305B (zh) 一种攻击检测方法、装置及网站应用级入侵防护***waf
CN111835812B (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
GR01 Patent grant
GR01 Patent grant