CN109560900A - 数据发送方法和装置 - Google Patents

数据发送方法和装置 Download PDF

Info

Publication number
CN109560900A
CN109560900A CN201710892805.5A CN201710892805A CN109560900A CN 109560900 A CN109560900 A CN 109560900A CN 201710892805 A CN201710892805 A CN 201710892805A CN 109560900 A CN109560900 A CN 109560900A
Authority
CN
China
Prior art keywords
data
sent
sending times
current sending
error code
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
CN201710892805.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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710892805.5A priority Critical patent/CN109560900A/zh
Publication of CN109560900A publication Critical patent/CN109560900A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/189Transmission or retransmission of more than one copy of a message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/1887Scheduling and prioritising arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开了一种数据发送方法和装置。其中,该方法包括:在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。本发明解决了现有的数据发送方式在网络异常情况下,无法保证信息数据收发的稳定性和可靠性的技术问题。

Description

数据发送方法和装置
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据发送方法和装置。
背景技术
随着物联网的快速发展,作为目前最轻量级的物联网操作系统,大都采用消息队列遥测传输协议(Message Queuing Telemetry Transport,MQTT)作为消息通道的协议,该协议支持所有平台,几乎可以把所有物品和外部联系起来,是目前在资源受限的嵌入式设备常用的消息通信协议,由于该协议的报文比较短,固定报头只有一个字节,支持消息的离线接收,通过服务质量(Quality of Service,QoS)来保证消息的可达性。
但是,在嵌入式设备处于带宽小、网络拥堵以及网络信号差等弱网环境的情况下,发送消息频率过快时,设备常常来不及处理发送消息,而返回一个错误代码EAGAIN,当设备内存不够用时会返回另外的一个错误代码ENOMEM,如何处理这些不同类型的错误代码,对维持网络连接的稳定性异常重要。
现有的网络异常处理方式,一般在返回错误代码EAGAIN时,设备会忽略该错误代码EAGAIN,继续执行一次发送(重发),但是这无疑会加重设备的资源负担,反而导致返回错误代码EAGAIN的现象更频繁的出现,从而无法恢复网络连接,不利于维持网络连接的稳定性。
针对上述现有的数据发送方式不利于维持网络信息收发的稳定性和可靠性的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据发送方法和装置,以至少解决现有的数据发送方式在网络异常情况下,无法保证信息数据收发的稳定性和可靠性的技术问题。
根据本发明实施例的一个方面,提供了一种数据发送方法,包括:在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
根据本发明实施例的另一方面,还提供了一种数据发送装置,包括:获取模块,用于在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;设置模块,用于若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
根据本发明实施例的另一方面,还提供了一种计算机终端,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述的数据发送方法。
根据本发明实施例的另一方面,又提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述的数据发送方法。
根据本发明实施例的另一方面,还提供了一种数据发送方法,包括:在接收到第一错误代码的情况下,获取待发送数据的当前重发次数,第一错误代码用于指示再次发送待发送数据;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
在本发明实施例中,采用自适应网络控制的方式,通过在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔,达到了在出现信息数据发送错误时,根据自适应的网络控制方式,减轻发送设备的资源消耗的目的,从而实现了提高信息数据发送的稳定性和可靠性的技术效果,进而解决了现有的数据发送方式在网络异常情况下,无法保证信息数据收发的稳定性和可靠性的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例1的一种数据发送方法的流程图;
图2是根据本发明实施例1的一种可选的数据发送方法的流程图;
图3是根据本发明实施例1的一种可选的数据发送方法的流程图;
图4是根据本发明实施例1的一种可选的数据发送方法的流程图;
图5是根据本发明实施例1的一种可选的数据发送方法的流程图;
图6是根据本申请实施例1的一种可选的数据发送方法的步骤流程图;
图7是根据本申请实施例2的一种数据发送装置的结构示意图;
图8是根据本申请实施例2的一种可选的数据发送装置的结构示意图;以及
图9是根据本申请实施例3的一种计算机终端的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
消息队列传输协议:Message Queuing Telemetry Transport(MQTT),是指一个即时通讯协议,可以用于为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备之间的通信协议。
错误代码(errno):是指记录系统或设备的最后一次出现异常的代码,当发生错误时,通过查看该错误代码的值,可以推测出现错误的原因;其中,EAGAIN为一种指示再次发送的错误码,ENOMEM为一种指示不再发送的错误码。
实施例1
根据本发明实施例,还提供了一种数据发送方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
需要说明的是,本实施例所提供的一种数据发送方法可用于嵌入式设备向服务器发送信息数据的过程中,以确保在网络异常情况下,持续正常的向服务器发送信息数据。
由于消息队列遥测传输协议,主要是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备而设计的通信协议,其中,该通信协议支持传输控制协议/因特网互联协议(Transmiss ion Control Protocol/Internet Protocol,TCP/IP)提供网络连接,并且支持所有的通信平台,是目前在资源受限的嵌入式设备常用的消息通信协议,由于该协议的报文比较短,固定报头只有一个字节,支持消息的离线接收,通过服务质量来保证消息的可达性。
其中,该通信协议有三种消息发布服务质量:1)至多一次,也即消息发布完全依赖TCP/IP网络,会发生消息丢失或者重复发送;2)只有一次,确保消息到达一次;3)至少一次,确保消息到达,但是极易出现消息重复发送的情况。
由上可知,上述通信协议的消息发布服务质量,仍不能有效保证消息的可达性,尤其在嵌入式设备处于带宽小、网络拥堵以及网络信号差等弱网环境的情况下,发送消息频率过快时,设备常常来不及处理发送消息,在这种情况下,协议栈返回一个错误代码EAGAIN;当设备内存不够用时,协议栈会返回另外的一个错误代码ENOMEM,如何处理这些不同类型的错误代码,对维持网络连接的稳定性异常重要。
具体的,本申请提供了如图1所示的数据发送方法。图1是根据本发明实施例1的一种数据发送方法的流程图,如图1所示,上述方法包括如下步骤:
步骤S102,在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;
具体的,上述步骤S102的执行主体可以为发送设备,例如:嵌入式设备,发送数据的执行主体可以为发送设备上的应用服务(APP)。上述第一错误代码可以为协议栈返回的指示再次发送的错误码(EAGAIN),上述待发送数据可以为发送设备待发送至服务器的信息数据。
需要说明的是,如果嵌入式设备当前处于带宽小、网络拥堵或网络信号差等弱网环境,或者嵌入式设备发送的消息频率过快,CPU或者WIFI模组来不及处理过多的待发送信息数据,可能会导致发送失败现象频发的现象,嵌入式设备的协议栈会返回一个错误代码(errno)。
在上述情况下,嵌入式设备接收到错误代码为指示再次发送的第一错误码EAGAIN时,表明发送缓冲区暂时不可用,为保证数据的正常发送,嵌入设备可以选择在一定时间之后再发送数据,在一种可选的实施例中,可以将嵌入式设备的传输通道收到第一错误码EAGAIN的次数作为待发送数据的当前重发次数。
步骤S104,若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
由于现有的处理方式直接继续发送待发送数据,不仅加重嵌入式设备的资源负担,而且会导致发送失败现象更加频繁。需要说明的是,为了避免发生类似现有情况,在上述步骤S104中,本申请实施例通过比较当前重发次数与预设阈值的大小,来确定是否继续重发待发送数据,以及下次重发待发送数据的时间间隔。
具体的,上述预设阈值可以为待发送数据的重发次数最大值,如果当前重发次数超出该预设阈值之后,可以选择不再重发待发送数据。
通过设置上述预设阈值,并比较当前重发次数与预设阈值的大小,可以减轻嵌入式设备的资源负担,避免导致发送失败现象更加频繁的问题。
在一种可选的实施例中,若判断当前重发次数小于预设阈值,则可以继续重发该待发送数据,但是为了避免重发次数过于频繁,加重发送设备的资源负担,可以根据当前重发次数,来设置下次重发待发送数据的时间间隔,进而可以减轻当前的网络资源消耗,提高信息数据发送的稳定性和高效性,从而可以持续正常的发送数据。
基于上述步骤S102至步骤S104所限定的方案可以获知,在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
容易注意到的是,由于本申请上述实施例在接收到协议栈返回第一错误代码EAGAIN的情况下,并不同于现有的忽略该第一错误代码EAGAIN,直接执行重发的处理方式,而是通过获取待发送数据的当前重发次数,并将上述当前重发次数与预设阈值进行比较,来判断是否继续重发待发送数据,并根据上述当前重发次数来确定下次重发待发送数据的时间间隔。
通过本申请上述实施例所提供的方案,可以达到在信息数据发送出现错误时,根据自适应的网络控制方式,也即输入/输出控制的方式,减轻发送设备的资源消耗的目的,从而实现了提高信息数据发送的稳定性和可靠性的技术效果,进而解决了现有的数据发送方式在网络异常情况下,无法保证信息数据收发的稳定性和可靠性的技术问题。
在一种可选的实施方式中,图2是根据本发明实施例1的一种可选的数据发送方法的流程图,如图2所示,获取待发送数据的当前重发次数之前,方法还包括如下方法步骤:
步骤S202,发送待发送数据。
在一种可选的实施例中,上述步骤S202,具体可以为嵌入式设备中的应用服务(APP)通过TCP发送接口,向云服务器发送信息数据。
步骤S204,当发送失败时,检测接收到的错误代码。
具体的,上述错误代码可以为MQTT协议栈返回的错误代码errno。
作为一种可选的实施例,在待发送数据发送失败的情况下,嵌入式设备检测MQTT协议栈返回的错误代码errno。
步骤S206,若接收到的错误代码为第一错误代码,触发获取待发送数据的当前重发次数;
具体的,上述第一错误代码为EAGAIN指示再次发送的错误码。
在一种可选的实施例中,若接收到的错误代码为第一错误代码,也即,errno=EAGAIN,则表明当前发送缓冲区暂时不可用,处于带宽小、网络拥堵以及网络信号差等弱网环境下,但无需断开嵌入式设备与服务器的连接,仍可以重发待发送数据,在此情况下,可以触发获取待发送数据的当前重发次数,具体的,该当前重发次数可以是嵌入式设备的传输通道收到第一错误码EAGAIN的次数。
步骤S208,若接收到的错误代码不为第一错误代码,断开当前连接。
具体的,如果检测到MQTT协议栈返回的错误代码errno不是上述第一错误代码EAGAIN,断开嵌入式设备与服务器之间的网络连接。
作为一种可选的实施方式,在当前接收到的错误代码为错误代码ENOMEM的情况下,由于该错误代码ENOMEM用于指示网络出现异常或者内存不足,因此,断开嵌入式设备与服务器之间的网络连接,不在重发待发送数据。
需要说明的是,在断开嵌入式设备与服务器之间的网络连接之后,可以重新初始化建立新的网络连接,以确保待发送数据尽快发送成功,提高用户体验。
作为一种可选的实施方式,图3是根据本发明实施例1的一种可选的数据发送方法的流程图,如图3所示,上述步骤S102中:获取待发送数据的当前重发次数,可以通过如下方法步骤实现:
步骤S1021,统计预设时间段内连续接收到第一错误代码的次数。
步骤S1023,将预设时间段内连续接收到第一错误代码的次数作为当前重发次数。
具体的,在上述步骤S1021至步骤S1023中,可以通过统计预设时间段内,嵌入式设备的传输通道收到第一错误码EAGAIN的次数,来获取当前嵌入式设备发送待发送数据的当前重发次数。
需要说明的是,上述预设时间可以根据用户的需求进行设置,可以实现本申请实施例即可,本申请对此不作具体限制。
此外,本申请还提供了一种可选的实施方式,图4是根据本发明实施例1的一种可选的数据发送方法的流程图,如图4所示,上述步骤S104中:根据当前重发次数设置下次重发待发送数据的时间间隔,可以通过如下方法步骤实现:
步骤S1041,计算当前重发次数与预设参数的乘积;
步骤S1043,将乘积设置为下次重发待发送数据的时间间隔。
在本申请实施例中,若待发送数据的当前重发次数小于预设阈值,则根据当前重发次数设置下次重发待发送数据的时间间隔。
具体的,上述预设参数为预先定义的一个固定时间,在上述步骤S1041至S1043中,可以计算上述待发送数据的当前重发次数与预设参数的乘积,将得到的乘积设置为下次重发待发送数据的时间间隔。
在一种可选的实施例中,若重发待发送数据的次数表示为count,预设参数表示为WRITE_TIME,则设置下次重发待发送数据的时间间隔为count*WRITE_TIME。
在另一种可选的实施方式中,图5是根据本发明实施例1的一种可选的数据发送方法的流程图,如图5所示,在执行上述步骤S104之后,也即根据当前重发次数设置下次重发待发送数据的时间间隔之后,上述方法还包括如下方法步骤:
步骤S106,根据时间间隔重新发送待发送数据;
步骤S108,在发送成功后,重置时间间隔。
具体的,上述时间为下次重发待发送数据的时间间隔count*WRITE_TIME。
作为一种可选的实施例,在根据当前重发次数设置下次重发待发送数据的时间间隔之后,根据下次重发待发送数据的时间间隔count*WRITE_TIME,重新发送待发送数据;并在重新发送该待发送数据之后,重新设置发送待发送数据的时间间隔。
基于上述步骤S106至S108提供的可选实施方式,根据计算得到的下次重发待发送数据的时间间隔,来重新发送待发送数据,进而可以减轻当前的网络资源消耗,提高信息数据发送的稳定性和高效性,从而可以持续正常的发送数据;并且在可以成功发送数据的情况下,重置发送待发送数据的时间间隔,进而可以提高数据的发送效率。
在一种可选的实施方式中,若判断出当前重发次数大于等于预设阈值,也即,当前重发次数已经超出预设的重发次数的最大值,表明当前网络连接可能出现异常,则断开嵌入式设备与云服务器之间的网络连接,并重新初始化建立新的网络连接,以确保尽快成功重发待发送数据。
根据本发明实施例,本申请还提供了一种可选的实施例,图6是根据本申请实施例1的一种可选的数据发送方法的步骤流程图,如图6所示,上述可选的实施例可以通过如下步骤实现:
步骤S1,发送待发送数据。
具体的,在上述步骤S1中,可以是嵌入式设备通过TCP发送接口(例如,tcp_write(),tcp_send()),将发送队列上的待发送数据发送至云服务器(Cloud Server)。
步骤S3,检测待发送数据是否发送成功。
具体的,在上述步骤S3中,若检测到待发送数据发送成功,则返回执行步骤S1;若检测到待发送数据发送失败,则执行步骤S5。
步骤S5,检测接收到的错误代码是否为第一错误代码EAGAIN。
具体的,在上述步骤S5中,若检测接收到错误代码为第一错误代码EAGAIN,则执行步骤S7;若检测接收到错误代码为除第一错误代码EAGAIN之外的其他错误代码,则执行步骤S13。
步骤S7,获取待发送数据的当前重发次数。
具体的,在上述步骤S7中,可以将嵌入式设备的传输通道收到第一错误码EAGAIN的次数,作为当前重发次数。
步骤S9,判断当前重发次数是否小于预设阈值。
具体的,在上述步骤S9中,预设阈值可以为待发送数据的重发次数最大值。若当前重发次数小于预设阈值,则执行步骤S11,若当前重发次数大于等于预设阈值,则执行步骤S13。
步骤S11,根据当前重发次数设置下次重发待发送数据的时间间隔。
具体的,在上述步骤S11中,若当前重发次数小于预设阈值,可以计算当前重发次数与预设参数的乘积,将得到的乘积设置为下次重发待发送数据的时间间隔,并执行步骤S15。
步骤S13,断开嵌入式设备与云服务器之间的网络连接,并重新初始化建立新的网络连接。
步骤S15,根据时间间隔重新发送待发送数据。
具体的,在上述步骤S15中,上述时间间隔为计算当前重发次数与预设参数得到的乘积。
步骤S17,在发送成功后,重置时间间隔。
在上述步骤S17中,在成功发送数据的情况下,重置发送待发送数据的时间间隔,进而可以达到提高数据发送效率的目的。
根据本发明实施例,还提供了一种数据发送方法,包括:在接收到第一错误代码的情况下,获取待发送数据的当前重发次数,第一错误代码用于指示再次发送待发送数据;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述数据发送方法的数据发送装置,图7是根据本申请实施例2的一种数据发送装置的结构示意图,如图7所示,该装置包括如下模块:获取模块10和设置模块14,其中,
获取模块10,用于在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;设置模块14,用于若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
此处需要说明的是,上述获取模块10和设置模块14对应于实施例1中的步骤S102至步骤S104,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例3提供的计算机终端9中。
基于上述实施例所限定的方案可以获知,获取模块10,用于在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;设置模块14,用于若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
容易注意到的是,由于本申请上述实施例在接收到协议栈返回第一错误代码EAGAIN的情况下,并不同于现有的忽略该第一错误代码EAGAIN,直接执行重发的处理方式,而是通过获取待发送数据的当前重发次数,并将上述当前重发次数与预设阈值进行比较,来判断是否继续重发待发送数据,并根据上述当前重发次数来确定下次重发待发送数据的时间间隔。
通过本申请上述实施例所提供的方案,可以达到在信息数据发送出现错误时,根据自适应的网络控制方式,也即输入/输出控制的方式,减轻发送设备的资源消耗的目的,从而实现了提高信息数据发送的稳定性和可靠性的技术效果,进而解决了现有的数据发送方式在网络异常情况下,无法保证信息数据收发的稳定性和可靠性的技术问题。
在一种可选的实施方式中,图8是根据本申请实施例2的一种可选的数据发送装置的结构示意图,如图8所示,上述装置还包括如下模块:发送模块16、检测模块18、触发模块20和第一断开模块22,其中,
发送模块16,用于发送所述待发送数据;
检测模块18,用于当发送失败时,检测接收到的错误代码;
触发模块20,用于若接收到的错误代码为所述第一错误代码,触发所述获取待发送数据的当前重发次数;
第一断开模块22,用于若接收到的错误代码不为所述第一错误代码,断开当前连接。
此处需要说明的是,上述发送模块16、检测模块18、触发模块20和第一断开模块22对应于实施例1中的步骤S202至步骤S208,四个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例3提供的计算机终端9中。
在一种可选的实施方式中,如图8所示,上述获取模块10,包括:统计单元101和第一设置单元103,其中,
统计单元101,用于统计预设时间段内连续接收到所述第一错误代码的次数;
第一设置单元103,用于将所述预设时间段内连续接收到所述第一错误代码的次数作为所述当前重发次数。
此处需要说明的是,上述统计单元101和第一设置单元103对应于实施例1中的步骤S1021至步骤S1023,两个单元模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例3提供的计算机终端9中。
在一种可选的实施方式中,如图8所示,上述设置模块14,包括:计算单元141和第二设置单元143,其中,
计算单元141,用于计算所述当前重发次数与预设参数的乘积;
第二设置单元143,用于将所述乘积设置为所述下次重发所述待发送数据的时间间隔。
此处需要说明的是,上述计算单元141和第二设置单元143对应于实施例1中的步骤S1041至步骤S1043,两个单元模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例3提供的计算机终端9中。
在一种可选的实施方式中,如图8所示,上述装置还包括如下模块:重发模块24和重置模块26,其中,
重发模块24,用于根据所述时间间隔重新发送所述待发送数据;
重置模块26,用于在发送成功后,重置所述时间间隔。
此处需要说明的是,上述重发模块24和重置模块26对应于实施例1中的步骤S106至步骤S108,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例3提供的计算机终端9中。
在一种可选的实施方式中,如图8所示,上述装置还包括如下模块:第二断开模块28,其中,第二断开模块28,用于若所述当前重发次数大于等于所述预设阈值,断开当前连接。
实施例3
本发明的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。
图9示出了一种计算机终端的硬件结构框图。如图9所示,计算机终端9可以包括一个或多个(图中采用92a、92b,……,92n来示出)处理器92(处理器92可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器94、以及用于通信功能的传输装置96。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图9所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端9还可包括比图9中所示更多或者更少的组件,或者具有与图9所示不同的配置。
应当注意到的是上述一个或多个处理器92和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端9中的其他元件中的任意一个。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
处理器92可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
存储器94可用于存储应用软件的软件程序以及模块,如本申请实施例中的数据发送方法对应的程序指令/数据存储装置,处理器92通过运行存储在存储器94内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据发送方法。存储器94可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器94可进一步包括相对于处理器92远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端9。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置96用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端9的通信供应商提供的无线网络。在一个实例中,传输装置96包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置96可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端9的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图9所示的计算机终端9可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图9仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算机终端9中的部件的类型。
在本实施例中,上述计算机终端可以执行应用程序的漏洞检测方法中以下步骤的程序代码:在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
处理器可以通过传输装置调用存储器存储的信息及应用程序,以执行下述步骤:在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
可选的,上述处理器还可以执行如下步骤的程序代码:发送待发送数据;当发送失败时,检测接收到的错误代码;若接收到的错误代码为第一错误代码,触发获取待发送数据的当前重发次数。
可选的,上述处理器还可以执行如下步骤的程序代码:若接收到的错误代码不为第一错误代码,断开当前连接。
可选的,上述处理器还可以执行如下步骤的程序代码:统计预设时间段内连续接收到第一错误代码的次数;将预设时间段内连续接收到第一错误代码的次数作为当前重发次数。
可选的,上述处理器还可以执行如下步骤的程序代码:计算当前重发次数与预设参数的乘积;将乘积设置为下次重发待发送数据的时间间隔。
可选的,上述处理器还可以执行如下步骤的程序代码:根据时间间隔重新发送待发送数据;在发送成功后,重置时间间隔。
可选的,上述处理器还可以执行如下步骤的程序代码:若当前重发次数大于等于预设阈值,断开当前连接。
采用本发明实施例,提供了一种数据发送的方案。通过在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔,从而达到了出现信息数据发送错误时,减轻发送设备的资源消耗的目的,进而解决了现有的数据发送方式在网络异常情况下,无法保证信息数据收发的稳定性和可靠性的技术问题。
本领域普通技术人员可以理解,图9所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternet Devices,MID)、PAD等终端设备。图9其并不对上述电子装置的结构造成限定。例如,计算机终端9还可包括比图9中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图9所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例4
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例1所提供的数据发送方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若当前重发次数小于预设阈值,根据当前重发次数设置下次重发待发送数据的时间间隔。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:发送待发送数据;当发送失败时,检测接收到的错误代码;若接收到的错误代码为第一错误代码,触发获取待发送数据的当前重发次数。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:若接收到的错误代码不为第一错误代码,断开当前连接。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:统计预设时间段内连续接收到第一错误代码的次数;将预设时间段内连续接收到第一错误代码的次数作为当前重发次数。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:计算当前重发次数与预设参数的乘积;将乘积设置为重发待发送数据的时间间隔。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:根据时间间隔重新发送待发送数据;在发送成功后,重置时间间隔。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:若当前重发次数大于等于预设阈值,断开当前连接。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (12)

1.一种数据发送方法,其特征在于,包括:
在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;
若所述当前重发次数小于预设阈值,根据所述当前重发次数设置下次重发所述待发送数据的时间间隔。
2.根据权利要求1所述的方法,其特征在于,获取待发送数据的当前重发次数之前,所述方法还包括:
发送所述待发送数据;
当发送失败时,检测接收到的错误代码;
若接收到的错误代码为所述第一错误代码,触发所述获取待发送数据的当前重发次数。
3.根据权利要求2所述的方法,其特征在于,还包括:
若接收到的错误代码不为所述第一错误代码,断开当前连接。
4.根据权利要求1所述的方法,其特征在于,所述获取待发送数据的当前重发次数包括:
统计预设时间段内连续接收到所述第一错误代码的次数;
将所述预设时间段内连续接收到所述第一错误代码的次数作为所述当前重发次数。
5.根据权利要求1所述的方法,其特征在于,所述根据所述当前重发次数设置下次重发所述待发送数据的时间间隔包括:
计算所述当前重发次数与预设参数的乘积;
将所述乘积设置为重发所述待发送数据的时间间隔。
6.根据权利要求1所述的方法,其特征在于,根据所述当前重发次数设置下次重发所述待发送数据的时间间隔之后,所述方法还包括:
根据所述时间间隔重新发送所述待发送数据;
在发送成功后,重置所述时间间隔。
7.根据权利要求1至6中任一项所述的方法,其特征在于,还包括:
若所述当前重发次数大于等于所述预设阈值,断开当前连接。
8.一种数据发送装置,其特征在于,包括:
获取模块,用于在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;
设置模块,用于若所述当前重发次数小于预设阈值,根据所述当前重发次数设置下次重发所述待发送数据的时间间隔。
9.一种计算机终端,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:在接收到第一错误代码的情况下,获取待发送数据的当前重发次数;若所述当前重发次数小于预设阈值,根据所述当前重发次数设置下次重发所述待发送数据的时间间隔。
10.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至7中任意一项所述的数据发送方法。
11.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至7中任意一项所述的数据发送方法。
12.一种数据发送方法,其特征在于,包括:
在接收到第一错误代码的情况下,获取待发送数据的当前重发次数,所述第一错误代码用于指示再次发送所述待发送数据;
若所述当前重发次数小于预设阈值,根据所述当前重发次数设置下次重发所述待发送数据的时间间隔。
CN201710892805.5A 2017-09-27 2017-09-27 数据发送方法和装置 Pending CN109560900A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710892805.5A CN109560900A (zh) 2017-09-27 2017-09-27 数据发送方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710892805.5A CN109560900A (zh) 2017-09-27 2017-09-27 数据发送方法和装置

Publications (1)

Publication Number Publication Date
CN109560900A true CN109560900A (zh) 2019-04-02

Family

ID=65864260

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710892805.5A Pending CN109560900A (zh) 2017-09-27 2017-09-27 数据发送方法和装置

Country Status (1)

Country Link
CN (1) CN109560900A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110290016A (zh) * 2019-07-25 2019-09-27 腾讯科技(深圳)有限公司 设备故障处理方法、装置、物联网设备及存储介质
CN111082901A (zh) * 2019-11-21 2020-04-28 深圳前海环融联易信息科技服务有限公司 一种智能消息发送方法、装置、计算机设备及存储介质
CN111652990A (zh) * 2020-07-02 2020-09-11 支付宝(杭州)信息技术有限公司 公共交通乘车码的生成方法、装置和电子设备
CN115022384A (zh) * 2022-05-05 2022-09-06 北京北方华创微电子装备有限公司 一种hsms通信连接方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101061657A (zh) * 2004-12-10 2007-10-24 富士通株式会社 发送装置、接收装置及其收发方法
CN101207617A (zh) * 2006-12-22 2008-06-25 英业达股份有限公司 网络储存系统的数据传输方法
US20090300650A1 (en) * 2008-06-02 2009-12-03 Microsoft Corporation Data flow network
CN105205021A (zh) * 2015-09-11 2015-12-30 华为技术有限公司 断开PCIe设备与主机之间的链接的方法和装置
CN106656434A (zh) * 2015-08-18 2017-05-10 Gn瑞声达A/S 在第一便携式通信装置和第二便携式通信装置之间交换数据包的方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101061657A (zh) * 2004-12-10 2007-10-24 富士通株式会社 发送装置、接收装置及其收发方法
CN101207617A (zh) * 2006-12-22 2008-06-25 英业达股份有限公司 网络储存系统的数据传输方法
US20090300650A1 (en) * 2008-06-02 2009-12-03 Microsoft Corporation Data flow network
CN106656434A (zh) * 2015-08-18 2017-05-10 Gn瑞声达A/S 在第一便携式通信装置和第二便携式通信装置之间交换数据包的方法
CN105205021A (zh) * 2015-09-11 2015-12-30 华为技术有限公司 断开PCIe设备与主机之间的链接的方法和装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110290016A (zh) * 2019-07-25 2019-09-27 腾讯科技(深圳)有限公司 设备故障处理方法、装置、物联网设备及存储介质
CN111082901A (zh) * 2019-11-21 2020-04-28 深圳前海环融联易信息科技服务有限公司 一种智能消息发送方法、装置、计算机设备及存储介质
CN111082901B (zh) * 2019-11-21 2022-05-13 深圳前海环融联易信息科技服务有限公司 一种智能消息发送方法、装置、计算机设备及存储介质
CN111652990A (zh) * 2020-07-02 2020-09-11 支付宝(杭州)信息技术有限公司 公共交通乘车码的生成方法、装置和电子设备
CN115022384A (zh) * 2022-05-05 2022-09-06 北京北方华创微电子装备有限公司 一种hsms通信连接方法和装置
CN115022384B (zh) * 2022-05-05 2023-10-13 北京北方华创微电子装备有限公司 一种hsms通信连接方法和装置

Similar Documents

Publication Publication Date Title
CN109560900A (zh) 数据发送方法和装置
CN106850402B (zh) 消息的传输方法和装置
CN106612284B (zh) 一种流数据的传输方法和装置
JP2017502545A5 (zh)
US20210329528A1 (en) Connection establishment method and related device
EP2784983A1 (en) Communication control device, server, communication system and computer readable medium
CN104038845B (zh) 报文传输方法及装置
CN104104608B (zh) 接收报文的方法及装置
JP2017510169A5 (zh)
CN111294664A (zh) 音视频传输数据方法、电子设备及存储介质
CN102223381A (zh) 一种消息推送方法、服务器、客户端及系统
CN107567107A (zh) 一种传输数据的方法及装置
EP3105885B1 (en) Integrity control in service chaining
CN108322836A (zh) 一种数据传输的方法及装置
CN105721235B (zh) 一种检测连通性的方法和装置
CN104852828A (zh) 一种网络时延检测方法,装置及系统
KR20190125427A (ko) 적응형 송신 방법 및 장치
CN109257138A (zh) 一种数据传输控制方法以及相关设备
CN101873235A (zh) 设备网络联通的检测方法、网管系统及网络系统
CN102801555A (zh) 一种网络中断的恢复方法及装置
CN101841424A (zh) 基于socks代理连接的ems网管系统和方法
EP3264851B1 (en) Data transmission method and device for data service
CN108462590A (zh) 网络流量的监控方法及装置、计算机终端
CN106603480B (zh) 流媒体文件的传输方法及装置
CN104506358A (zh) 基于snmp的网络管理系统及网络管理方法

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: 20190402