CN111314273A - 基于udp的数据传输方法和连接装置 - Google Patents

基于udp的数据传输方法和连接装置 Download PDF

Info

Publication number
CN111314273A
CN111314273A CN201811520003.2A CN201811520003A CN111314273A CN 111314273 A CN111314273 A CN 111314273A CN 201811520003 A CN201811520003 A CN 201811520003A CN 111314273 A CN111314273 A CN 111314273A
Authority
CN
China
Prior art keywords
address
socket
port
connection
binding
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.)
Granted
Application number
CN201811520003.2A
Other languages
English (en)
Other versions
CN111314273B (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.)
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 CN201811520003.2A priority Critical patent/CN111314273B/zh
Publication of CN111314273A publication Critical patent/CN111314273A/zh
Application granted granted Critical
Publication of CN111314273B publication Critical patent/CN111314273B/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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开了一种基于UDP的数据传输方法和连接装置。所述基于UDP的数据传输方法包括:将服务端地址和端口作为监听地址绑定于监听套接口;在所述监听套接口收到第一数据包时,创建连接套接口;将所述服务端地址和端口作为本地连接地址绑定于所述连接套接口;将客户端地址和端口作为对端连接地址绑定于所述连接套接口,所述客户端地址和端口从所述第一数据包中获得;利用所述连接套接口收发数据。本发明实施例提出的基于UDP的数据传输方法和装置可以允许即将关闭的原进程可以在连接套接口处理完数据后再退出,保证了服务不中断。

Description

基于UDP的数据传输方法和连接装置
技术领域
本申请涉及计算机信息处理领域,特别是涉及一种基于UDP的数据传输方法和连接装置。
背景技术
UDP(user datagram protocal用户数据报协议)是一种通讯协议,相比于面向连接的TCP协议,UDP是一种面向无连接的通讯协议,其通讯基本模型如图1所示。图1左侧为服务器的操作流程,右侧为客户端的操作流程。如图1所示,服务器首先创建套接口(socket),然后绑定服务器的地址,在绑定之后收发数据;客户端首先创建socket,在创建后即可以根据服务器的地址与服务器之间进行数据传输。在二者的进程结束时,服务器和客户端均结束连接。
在绑定地址的步骤中,UDP服务器通常调用bind()函数为服务器创建的套接口绑定本地地址/端口,在绑定结束后通过sendto()函数发送消息。在客户端,当客户端向服务器发送信息之前,客户端的socket由操作***随机分配一个本地地址/端口。在客户端根据服务器的bind()函数绑定的本地地址/端口发送消息时,即可携带客户端的本地地址/端口,使服务器获知客户端的本地地址/端口,从而实现二者点对点的消息传输。
基于UDP实现的可靠传输协议,如quic协议等的应用越来越普遍。传统UDP应用,在多进程中采用reuse port实现负载均衡。每个进程都由一个监听套接口(socket)监听在相同的UDP端口上,所有数据包都由该监听套接口进行收发,reuse port保证了相同的客户端地址发送的数据都被分发到同个进程上。但在进程进行重启的时候,新原进程交替,需要在原进程关闭监听端口,在新进程启动监听端口,这会造成原进程原有基于UDP之上的连接中断,导致数据传输错误,客户体验不好。
发明内容
鉴于上述问题,本发明一实施例提出一种基于UDP的数据传输方法和连接装置,以解决现有技术存在的问题。
为了解决上述问题,本申请一实施例公开一种基于UDP的数据传输方法,包括:
将服务端地址和端口作为监听地址绑定于监听套接口;
在所述监听套接口收到第一数据包时,创建连接套接口;
将所述服务端地址和端口作为本地连接地址绑定于所述连接套接口;将客户端地址和端口作为对端连接地址绑定于所述连接套接口,所述客户端地址和端口从所述第一数据包中获得;
利用所述连接套接口收发数据。
为了解决上述问题,本申请一实施例公开一种基于UDP的数据传输装置,包括:
第一绑定模块,用于将服务端地址和端口作为监听地址绑定于监听套接口;
连接套接口创建模块,用于在所述监听套接口收到第一数据包时,创建连接套接口;
第二绑定模块,用于将所述服务端地址和端口作为本地连接地址绑定于所述连接套接口;
第三绑定模块,用于将客户端地址和端口作为对端连接地址绑定于所述连接套接口,所述客户端地址和端口从所述第一数据包中获得;
收发模块,用于利用所述连接套接口收发数据包。
本申请一实施例还公开一种终端设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述终端设备执行上述的方法。
本申请一实施例还公开一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得处理器执行上述的方法。
由上述可知,本申请实施例包括以下优点:
本发明实施例提出的基于UDP的数据传输方法和装置,通过新建连接套接口并绑定本地连接地址和端口以及对端连接地址和端口,使得新建的连接套接口在架构上与原有的监听套接口分离出来,新建的连接套接口用于收发数据。在遇到进程重启的情况时,即将关闭的原进程关闭监听套接口和即将开启的新进程创建新的监听套接口的操作不影响所建立的连接套接口的通信,因此即将关闭的原进程可以在连接套接口处理完数据后再退出,保证了服务不中断。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中UDP连接的基本模型示意图。
图2是本申请核心构思的示意图。
图3是本申请第一实施例的基于UDP的数据传输方法的流程图。
图4是本申请第二实施例的基于UDP的数据传输方法的流程图。
图5是本申请第三实施例的基于UDP的数据传输装置的方框图。
图6是本申请第三实施例的基于UDP的数据传输装置的方框图。
图7示意性地示出了用于执行根据本发明的方法的终端设备的框图。
图8示意性地示出了用于保持或者携带实现根据本发明的方法的程序代码的存储单元。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
本申请的核心思想之一在于,提出一种基于UDP的数据传输方法和装置,如图2所示,在一实施例中,在利用UDP协议的socket()函数新建监听套接口,并利用bind()函数绑定服务端的本地地址和端口,并通过recvmesg()函数接收数据包后,利用socket()函数创建新的连接套接口。利用bind()函数绑定服务端地址和端口,并利用connect()函数绑定数据传输的对端地址和端口,实现了套接口四元组的绑定,从而新建的连接套接口可以收发对端地址和端口的数据,以在进程关闭时不影响连接套接口的工作,在新进程建立之后,原进程的连接不断,解决了现有技术中多进程UDP应用的连接性问题和多进程重启的旧连接中断问题。
第一实施例
本发明第一实施例提出一种基于UDP的数据传输方法。本发明实施例提出的方法可以应用于需要执行数据传输的服务端和客户端之间。图3所示为本发明第一实施例的基于UDP的数据传输方法的步骤流程图。如图3所示,本发明实施例的基于UDP的数据传输方法包括如下步骤:
S101,将服务端地址和端口作为监听地址绑定于监听套接口;
在传输数据之前,需要执行数据传输的服务端可以创建UDP的监听套接口,监听套接口用于获取每一个发送至该服务器地址的端口的数据包。监听套接口具有监听地址,例如所需要监听的IP地址和端口号。在这一步骤中,可以将服务端地址和端口号作为监听地址,从而对服务端进行监听。创建针对服务器的监听套接口的操作例如可以通过UDP的socket()函数实现。在创建监听套接口之后,可以利用UDP的bind()函数绑定服务器的本地监听地址和端口,通过recvmsg()函数接收数据。
在执行步骤S101之后,可以执行步骤S102,如下:
S102在所述监听套接口收到第一数据包时创建连接套接口;
在这一步骤中,当前述监听套接口收到第一数据包时,创建新的用于连接的套接口,在此称为连接套接口。连接套接口例如通过UDP的socket()函数建立。连接套接口的作用是连接通讯的两端,分别称为本地端和对端。利用本地端的本地连接地址和对端的对端连接地址实现两端之间的通讯。
在执行步骤S102之后,可以执行步骤S103如下:
S103,将所述服务端地址和端口作为本地连接地址绑定于为所述连接套接口;
在这一步骤中,可以将服务端地址和端口作为本地端的本地连接地址,利用bind()函数为该连接套接口绑定本地连接地址和端口。这样的操作之后,服务端地址和端口既作为监听套接口的监听地址,又作为连接套接口的本地连接地址,监听套接口和连接套接口绑定相同的本地连接地址和端口。
在一些情况下,根据UDP协议,bind()函数要求缺省条件下,一个套接口不能与一个已在使用中的本地地址和端口捆绑,因此在本发明实施例中,可以修改setsockopt()函数,SO_REUSEADDR BOOL允许套接口和一个已在使用中的地址和端口绑定,使得连接套接口可以与已在使用中的服务器的本地地址和端口绑定。
在执行步骤S103之后,可以执行步骤S104如下:
S104,将客户端地址和端口作为对端连接地址绑定于所述连接套接口,所述客户端地址和端口从所述第一数据包中获得
在这一步骤中,可以再利用UDP的connect()函数绑定数据传输的对端——例如客户端地址和端口,从而完成UDP四元组的绑定,服务端和客户端可以点对点地传输数据包,基于UDP上的可靠传输协议的连接性就由连接套接口的通信来保持。
这一步骤与现有技术不同之处在于,现有技术中,UDP服务都是通过监听套接口利用sendto()函数来直接收发数据的,在本发明实施例中,新建连接套接口,并利用UDP的blind()函数绑定与监听套接口相同的本地连接地址和端口,再通过connect()函数绑定对端连接地址和端口,利用了bind()和connect()函数,分别绑定服务器的本地连接地址和端口,以及对端连接地址和端口,完成四元组的绑定。
本发明实施例提出的方法创造性地新建了连接套接口,并应用了connect()函数用于绑定四元组,绑定后连接套接口只会收发该特定地址的数据包。原先的监听套接口只会处理未绑定客户端地址的数据包,这些数据包对服务端来说就是未建联的、未知地址的数据包。新建的连接套接口和connect()函数的意义在于另外创建了一个套接口,来处理针对特定的客户端地址和端口的通信。
在执行步骤S104之后,可以执行步骤S105如下:
S105,利用所述连接套接口收发数据包;
在这一步骤中,针对所创建的连接套接口,可以通过recv/send()等其他函数进行数据包的收发。
由于前述connect()函数已经绑定了对端连接地址和端口,UDP的recv/send()函数不需要携带对端连接地址,相较于现有技术中用于收发信息的recvmsg()函数来说,recv/send()是一个功能相同但更轻量的调用函数,从而可以使得***的消耗更低。
由上述内容可知,本发明实施例提出的基于UDP的数据传输方法,通过新建连接套接口并绑定本地连接地址和端口以及对端连接地址和端口,使得新建的连接套接口在架构上与原有的监听套接口分离出来,新建的连接套接口用于收发数据。在遇到进程重启的情况时,即将关闭的原进程关闭监听套接口和即将开启的新进程创建新的监听套接口的操作不影响所建立的连接套接口的通信,因此即将关闭的原进程可以在连接套接口处理完数据后再退出,保证了服务不中断。
相比而言,现有技术利用reuse port的方法没有解决进程重启过程的连接中断问题。要保证重启过程连接不中断,需要增加额外的进程间通信开销,造成较大的性能损耗,而且针对UDP的编程架构会复杂化。本发明实施例提出的方案解决了基于UDP的可靠传输协议在多进程编程中的难点,并简化了UDP编程的流程。
第二实施例
本发明第二实施例提出一种基于UDP的数据传输方法。图4所示为本发明第二实施例的基于UDP的数据传输方法的步骤流程图。如图4所示,本发明实施例的基于UDP的数据传输方法如下步骤:
S201,将服务端地址和端口作为监听地址绑定于监听套接口;
S202,在所述监听套接口收到第一数据包时,创建连接套接口;
S203,将所述服务端地址和端口作为本地连接地址绑定于所述连接套接口;
S205,将客户端地址和端口作为对端连接地址绑定于所述连接套接口,所述客户端地址和端口从所述第一数据包中获得;
S208,利用所述连接套接口收发数据。
上述步骤S201-S203、S205和S208与上一实施例的步骤S101至步骤S105相同或相似,在此不再赘述。本实施例重点说明与上一实施例的不同之处。
在可选实施例中,在步骤S201,即将服务端地址和端口作为监听地址绑定于监听套接口的步骤之前,所述方法还包括如下步骤:
S200,针对服务端创建监听套接口。
在这一步骤中,在传输数据之前,需要执行数据传输的服务端可以创建UDP的监听套接口,监听套接口用于获取每一个发送至该服务器地址的端口的数据包。监听套接口具有监听地址,例如所需要监听的IP地址和端口号。
在可选实施例中,步骤S205,即将客户端地址和端口作为对端连接地址绑定于所述连接套接口的步骤之前,该方法还可以包括如下步骤:
S204,从所述第一数据包中获得客户端地址和端口。
在接收到第一数据包后,可以从第一数据包中获得客户端地址和端口。第一数据包是特定的客户端所发送的数据包,其中携带了客户端的地址和端口。在这一步骤中可以获取该客户端的地址和端口,用于后续绑定操作。
在可选实施例中,步骤S205,即将客户端地址和端口作为对端连接地址绑定于所述连接套接口的步骤之后,本发明还可以包括如下步骤:
S206,当所述连接套接口收到第二数据包时,判断所述第二数据包的来源地址是否为与所述客户端的地址和端口匹配;
S207,当所述第二数据包的来源地址与所述客户端的地址和端口不匹配时,将所述第二数据包发送至所述监听套接口。
在一实施例中,可以利用UDP协议的setsockopt()这一原生函数实现利用bind()函数绑定本地地址和端口的操作以及利用connect()函数绑定对端地址和端口的原子操作。所谓原子操作,即将两个步骤合并为一个,使得二者之间无法***其他的操作。
在实际操作中,可以内核扩展setsockopt()函数,增加功能实现利用bind()函数绑定和利用connect()函数绑定的原子操作,避免创建的连接套接口在利用bind()函数绑定操作后利用connect()函数绑定操作之前收到其他数据包。
扩展setsockopt()后能保证原来的两个动作——利用bind()函数绑定和利用connect()函数绑定变成一个,中间不会收到其他地址的数据包,在本发明一实施例中,当检测到所述连接套接口未绑定对端的客户端地址和端口时,可以从所述监听套接口收到的数据包中获取客户端地址和端口;当两个操作之间收到第二数据包时,可以在步骤S206中确定该数据包是否为客户端地址和端口发送的数据包。当判断为否时,即所述第二数据包的来源地址不是已绑定的客户端地址和端口时,可以在步骤S207中将所述第二数据包发送至所述监听套接口,由监听套接口处理收到的新的数据包,从而保证绑定本地链接地址和端口、以及绑定对端连接地址和端口两个操作之间没有新的数据包***。
在可选实施例中,本发明还可以包括如下步骤:
S209,利用hash查找的方式查找监听套接口和连接套接口收到的数据包;
在这一步骤中,可以对内核改造UDP收包逻辑,将绑定在同个地址的UDP的套接口的收包查找方式由链表查找修改为hash查找,即,内核收到网卡发来的数据包后,需要将数据包分发到对应套接口的缓冲区中。
在一实施例中,可以修改UDP协议的内核__udp4_lib_lookup等相关函数,将收包时同个监听端口下的多个socket查找方式由链表查找改成hash查找。收包查找方式由链表查找修改为hash查找,可以解决高并发下CPU软中断占用高的问题。
在可选实施例中,该方法还可以包括如下步骤:
S210,在检测到数据传输结束后,关闭所述连接套接口;
在一实施例中,当基于UDP上的可靠传输连接结束时,可以通过UDP的close()函数关闭所述连接套接口。
在这一步骤中,新创建的连接套接口可以由close函数关闭,由于连接套接口在架构上和监听套接口分离出来,进程重启时,原进程关闭监听第一socket和新进程创建另一新的监听套接口的行为不影响连接套接口的通信。连接套接口可以在连接套接口梳理完数据后再关闭退出,保证了服务不中断。
由上述内容可知,本发明第二实施例提出的基于UDP的数据传输方法,通过新建连接套接口并绑定本地连接地址和端口以及对端连接地址和端口,使得新建的连接套接口在架构上与原有的监听套接口分离出来,新建的连接套接口用于收发数据。在遇到进程重启的情况时,即将关闭的原进程关闭监听套接口和即将开启的新进程创建新的监听套接口的操作不影响所建立的连接套接口的通信,因此即将关闭的原进程可以在连接套接口处理完数据后再退出,保证了服务不中断。
相比而言,现有技术利用reuse port的方法没有解决进程重启过程的连接中断问题。要保证重启过程连接不中断,需要增加额外的进程间通信开销,造成较大的性能损耗,而且针对UDP的编程架构会复杂化。本发明实施例提出的方案解决了基于UDP的可靠传输协议在多进程编程中的难点,并简化了UDP编程的流程。
在可选实施例中,例如在多进程服务中,本发明实施例提出的方法和装置采用UDPconnect方式及内核改造的方案,解决了传统UDP编程带来的UDP连接性问题及进程重启过程的连接中断问题。
在可选实施例中,本发明实施例提出的方案可以内核扩展setsockopt函数,增加功能实现绑定本地地址和端口以及绑定对端地址和端口本步骤的原子操作,避免创建的连接套接口在bind操作后connect操作之前收到其他数据包。
在可选实施例中,本发明实施例提出的方案可以对内核改造UDP收包逻辑,将绑定在同个地址的基于UDP协议的套接口的收包查找方式由链表查找修改为hash查找,解决高并发下CPU软中断占用高的问题。
第三实施例
本发明第三实施例提出一种基于UDP的数据传输装置,如图5所示,该装置包括:
第一绑定模块301,用于将服务端地址和端口作为监听地址绑定于监听套接口;
连接套接口创建模块302,用于在所述监听套接口收到第一数据包时,创建连接套接口;
第二绑定模块303,用于将所述服务端地址和端口作为本地连接地址绑定于所述连接套接口;
第三绑定模块304,用于将客户端地址和端口作为对端连接地址绑定于所述连接套接口,所述客户端地址和端口从所述第一数据包中获得;
收发模块305,用于利用所述连接套接口收发数据包。
综上所述,本实施例提出的基于UDP的数据传输装置至少具有如下优点:
本发明第三实施例提出的基于UDP的数据传输装置,通过新建连接套接口并绑定对端地址和端口,新的连接套接口在架构上和监听套接口分离出来,新的连接套接口函数用于收发数据。进程重启时,即将关闭的原进程关闭监听套接口和即将开启的新进程创建新的监听套接口的操作不影响所建立的连接套接口的通信,这意味着即将关闭的原进程可以在连接套接口处理完数据后再退出,保证了服务不中断。
相比而言,现有技术利用reuse port的方法没有解决进程重启过程的连接中断问题。要保证重启过程连接不中断,需要增加额外的进程间通信开销,造成较大的性能损耗,而且针对UDP的编程架构会复杂化。本发明实施例提出的方案解决了基于UDP的可靠传输协议在多进程编程中的难点,并简化了UDP编程的流程。
第四实施例
本发明第四实施例提出一种基于UDP的数据传输装置,如图6所示,该装置包括:
第一绑定模块401,用于将服务端地址和端口作为监听地址绑定于监听套接口;
连接套接口创建模块402,用于在所述监听套接口收到第一数据包时,创建连接套接口;
第二绑定模块403,用于将所述服务端地址和端口作为本地连接地址绑定于所述连接套接口;
第三绑定模块405,用于将客户端地址和端口作为对端连接地址绑定于所述连接套接口,所述客户端地址和端口从所述第一数据包中获得;
收发模块408,用于利用所述连接套接口收发数据包。
在可选实施例中,所述装置还包括:
获取模块404,用于从所述第一数据包中获得客户端地址和端口。
在一可选实施例中,所述装置还包括:
监听套接口创建模块400,用于针对服务端创建监听套接口。
在一可选实施例中,所述装置还包括:
关闭模块410,用于在检测到收发数据结束后,关闭所述连接套接口
在一可选实施例中,所述装置还包括:
判断模块406,用于当所述连接套接口收到第二数据包时,判断所述第二数据包的来源地址是否与所述客户端地址和端口匹配;
发送模块407,用于当所述第二数据包的来源地址与所述客户端的地址和端口不匹配时,将所述第二数据包发送至所述监听套接口。
在一可选实施例中,所述装置还包括:
查找模块409,用于利用hash查找的方式查找所述监听套接口和所述连接套接口收到的数据包。
在一可选实施例中,所述绑定操作通过UDP协议的connect函数实现。
综上所述,本实施例提出的基于UDP的数据传输装置至少具有如下优点:
由上述内容可知,本发明第四实施例提出的基于UDP的数据传输装置,通过新建连接套接口并绑定本地连接地址和端口以及对端连接地址和端口,使得新建的连接套接口在架构上与原有的监听套接口分离出来,新建的连接套接口用于收发数据。在遇到进程重启的情况时,即将关闭的原进程关闭监听套接口和即将开启的新进程创建新的监听套接口的操作不影响所建立的连接套接口的通信,因此即将关闭的原进程可以在连接套接口处理完数据后再退出,保证了服务不中断。
相比而言,现有技术利用reuse port的方法没有解决进程重启过程的连接中断问题。要保证重启过程连接不中断,需要增加额外的进程间通信开销,造成较大的性能损耗,而且针对UDP的编程架构会复杂化。本发明实施例提出的方案解决了基于UDP的可靠传输协议在多进程编程中的难点,并简化了UDP编程的流程。
除此之外,本实施例提出的基于UDP的数据传输装置至少还包括如下优点:
在多进程服务中,本发明实施例提出的方法和装置采用UDP connect方式及内核改造的方案,解决了传统UDP编程带来的UDP连接性问题及进程重启过程的连接中断问题。
在可选实施例中,本发明实施例提出的方案可以内核扩展setsockopt函数,增加功能实现绑定本地地址和端口以及绑定对端地址和端口本步骤的原子操作,避免创建的连接套接口在bind操作后connect操作之前收到其他数据包。
在可选实施例中,本发明实施例提出的方案可以对内核改造UDP收包逻辑,将绑定在同个地址的基于UDP协议的套接口的收包查找方式由链表查找修改为hash查找,解决高并发下CPU软中断占用高的问题。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
图7为本申请一实施例提供的终端设备的硬件结构示意图。如图7所示,该终端设备可以包括输入设备90、处理器91、输出设备92、存储器93和至少一个通信总线94。通信总线94用于实现元件之间的通信连接。存储器93可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,存储器93中可以存储各种程序,用于完成各种处理功能以及实现本实施例的方法步骤。
可选的,上述处理器91例如可以为中央处理器(Central Processing Unit,简称CPU)、应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,该处理器91通过有线或无线连接耦合到上述输入设备90和输出设备92。
可选的,上述输入设备90可以包括多种输入设备,例如可以包括面向用户的用户接口、面向设备的设备接口、软件的可编程接口、摄像头、传感器中至少一种。可选的,该面向设备的设备接口可以是用于设备与设备之间进行数据传输的有线接口、还可以是用于设备与设备之间进行数据传输的硬件***接口(例如USB接口、串口等);可选的,该面向用户的用户接口例如可以是面向用户的控制按键、用于接收语音输入的语音输入设备以及用户接收用户触摸输入的触摸感知设备(例如具有触摸感应功能的触摸屏、触控板等);可选的,上述软件的可编程接口例如可以是供用户编辑或者修改程序的入口,例如芯片的输入引脚接口或者输入接口等;麦克风等音频输入设备可以接收语音数据。输出设备92可以包括显示器、音响等输出设备。
在本实施例中,该终端设备的处理器包括用于执行各设备中数据处理装置各模块的功能,具体功能和技术效果参照上述实施例即可,此处不再赘述。
图8为本申请另一实施例提供的终端设备的硬件结构示意图。图8是对图7在实现过程中的一个具体的实施例。如图8所示,本实施例的终端设备包括处理器101以及存储器102。
处理器101执行存储器102所存放的计算机程序代码,实现上述实施例中图2至图3的基于UDP的数据传输方法。
存储器102被配置为存储各种类型的数据以支持在终端设备的操作。这些数据的示例包括用于在终端设备上操作的任何应用程序或方法的指令,例如消息,图片,视频等。存储器102可能包含随机存取存储器(random access memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
可选地,处理器101设置在处理组件100中。该终端设备还可以包括:通信组件103,电源组件104,多媒体组件105,音频组件106,输入/输出接口107和/或传感器组件108。终端设备具体所包含的组件等依据实际需求设定,本实施例对此不作限定。
处理组件100通常控制终端设备的整体操作。处理组件100可以包括一个或多个处理器101来执行指令,以完成上述图2至图3方法的全部或部分步骤。此外,处理组件100可以包括一个或多个模块,便于处理组件100和其他组件之间的交互。例如,处理组件100可以包括多媒体模块,以方便多媒体组件105和处理组件100之间的交互。
电源组件104为终端设备的各种组件提供电力。电源组件104可以包括电源管理***,一个或多个电源,及其他与为终端设备生成、管理和分配电力相关联的组件。
多媒体组件105包括在终端设备和用户之间的提供一个输出接口的显示屏。在一些实施例中,显示屏可以包括液晶显示器(LCD)和触摸面板(TP)。如果显示屏包括触摸面板,显示屏可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
音频组件106被配置为输出和/或输入音频信号。例如,音频组件106包括一个麦克风(MIC),当终端设备处于操作模式,如语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或经由通信组件103发送。在一些实施例中,音频组件106还包括一个扬声器,用于输出音频信号。
输入/输出接口107为处理组件100和***接口模块之间提供接口,上述***接口模块可以是点击轮,按钮等。这些按钮可包括但不限于:音量按钮、启动按钮和锁定按钮。
传感器组件108包括一个或多个传感器,用于为终端设备提供各个方面的状态评估。例如,传感器组件108可以检测到终端设备的打开/关闭状态,组件的相对定位,用户与终端设备接触的存在或不存在。传感器组件108可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在,包括检测用户与终端设备间的距离。在一些实施例中,该传感器组件108还可以包括摄像头等。
通信组件103被配置为便于终端设备和其他设备之间有线或无线方式的通信。终端设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个实施例中,该终端设备中可以包括SIM卡插槽,该SIM卡插槽用于***SIM卡,使得终端设备可以登录GPRS网络,通过互联网与服务端建立通信。
由上可知,在图8实施例中所涉及的通信组件103、音频组件106以及输入/输出接口107、传感器组件108均可以作为图7实施例中的输入设备的实现方式。
本申请实施例提供了一种终端设备,包括:一个或多个处理器;和其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述终端设备执行如本申请实施例中一个或多个所述的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种基于UDP的数据传输方法和连接装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (14)

1.一种基于UDP的数据传输方法,包括:
将服务端地址和端口作为监听地址绑定于监听套接口;
在所述监听套接口收到第一数据包时,创建连接套接口;
将所述服务端地址和端口作为本地连接地址绑定于所述连接套接口;
将客户端地址和端口作为对端连接地址绑定于所述连接套接口,所述客户端地址和端口从所述第一数据包中获得;以及
利用所述连接套接口收发数据。
2.根据权利要求1所述的方法,其特征在于,所述将服务端地址和端口作为监听地址绑定于监听套接口的步骤之前,所述方法还包括:
针对服务端创建监听套接口。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在检测到收发数据结束后,关闭所述连接套接口。
4.根据权利要求1所述的方法,在所述创建连接套接口的步骤之后,所述方法还包括:
当所述连接套接口收到第二数据包时,判断所述第二数据包的来源地址是否与所述客户端地址和端口匹配;
当所述第二数据包的来源地址与所述客户端的地址和端口不匹配时,将所述第二数据包发送至所述监听套接口。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用hash查找的方式查找所述监听套接口和所述连接套接口收到的数据包。
6.根据权利要求1所述的方法,其特征在于,所述将所述服务端地址和端口作为本地连接地址绑定于所述连接套接口的步骤中,以及所述将客户端地址和端口作为对端连接地址绑定于所述连接套接口的步骤中,所述绑定操作通过UDP协议的connect函数实现。
7.一种基于UDP的数据传输装置,其特征在于,包括:
第一绑定模块,用于将服务端地址和端口作为监听地址绑定于监听套接口;
连接套接口创建模块,用于在所述监听套接口收到第一数据包时,创建连接套接口;
第二绑定模块,用于将所述服务端地址和端口作为本地连接地址绑定于所述连接套接口;
第三绑定模块,用于将客户端地址和端口作为对端连接地址绑定于所述连接套接口,所述客户端地址和端口从所述第一数据包中获得;以及
收发模块,用于利用所述连接套接口收发数据包。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
监听套接口创建模块,用于针对服务端创建监听套接口。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
关闭模块,用于在检测到收发数据结束后,关闭所述连接套接口。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括:
判断模块,用于当所述连接套接口收到第二数据包时,判断所述第二数据包的来源地址是否与所述客户端地址和端口匹配;
发送模块,用于当所述第二数据包的来源地址与所述客户端的地址和端口不匹配时,将所述第二数据包发送至所述监听套接口。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
查找模块,用于利用hash查找的方式查找所述监听套接口和所述连接套接口收到的数据包。
12.根据权利要求7所述的装置,其特征在于,所述绑定操作通过UDP协议的connect函数实现。
13.一种终端设备,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述终端设备执行如权利要求1-6中一个或多个所述的方法。
14.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得处理器执行如权利要求1-6中一个或多个所述的方法。
CN201811520003.2A 2018-12-12 2018-12-12 基于udp的数据传输方法和连接装置 Active CN111314273B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811520003.2A CN111314273B (zh) 2018-12-12 2018-12-12 基于udp的数据传输方法和连接装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811520003.2A CN111314273B (zh) 2018-12-12 2018-12-12 基于udp的数据传输方法和连接装置

Publications (2)

Publication Number Publication Date
CN111314273A true CN111314273A (zh) 2020-06-19
CN111314273B CN111314273B (zh) 2022-06-07

Family

ID=71161570

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811520003.2A Active CN111314273B (zh) 2018-12-12 2018-12-12 基于udp的数据传输方法和连接装置

Country Status (1)

Country Link
CN (1) CN111314273B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112261094A (zh) * 2020-10-10 2021-01-22 厦门网宿有限公司 一种报文处理方法及代理服务器
CN112492054A (zh) * 2020-11-05 2021-03-12 杭州萤石软件有限公司 用户数据报协议udp端口的复用方法、装置及设备
CN112631788A (zh) * 2021-01-06 2021-04-09 上海哔哩哔哩科技有限公司 数据传输方法及数据传输服务器

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070057640A (ko) * 2005-12-01 2007-06-07 한국전자통신연구원 전송 제어 프로토콜과 사용자 데이터그램 프로토콜의 소켓검색 장치
CN101272402A (zh) * 2008-05-14 2008-09-24 深圳市同洲电子股份有限公司 一种数据传输的方法、装置及***
CN103544324A (zh) * 2013-11-11 2014-01-29 北京搜狐新媒体信息技术有限公司 一种内核态的数据访问方法、装置及***
CN105337808A (zh) * 2015-11-30 2016-02-17 网宿科技股份有限公司 数据传输的方法、装置及***
CN106506644A (zh) * 2016-11-07 2017-03-15 深圳市共进电子股份有限公司 终端调试信息收集方法和***
CN108833469A (zh) * 2018-04-27 2018-11-16 厦门理工学院 一种终端对终端的资源传输方法、装置和终端设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070057640A (ko) * 2005-12-01 2007-06-07 한국전자통신연구원 전송 제어 프로토콜과 사용자 데이터그램 프로토콜의 소켓검색 장치
CN101272402A (zh) * 2008-05-14 2008-09-24 深圳市同洲电子股份有限公司 一种数据传输的方法、装置及***
CN103544324A (zh) * 2013-11-11 2014-01-29 北京搜狐新媒体信息技术有限公司 一种内核态的数据访问方法、装置及***
CN105337808A (zh) * 2015-11-30 2016-02-17 网宿科技股份有限公司 数据传输的方法、装置及***
CN106506644A (zh) * 2016-11-07 2017-03-15 深圳市共进电子股份有限公司 终端调试信息收集方法和***
CN108833469A (zh) * 2018-04-27 2018-11-16 厦门理工学院 一种终端对终端的资源传输方法、装置和终端设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112261094A (zh) * 2020-10-10 2021-01-22 厦门网宿有限公司 一种报文处理方法及代理服务器
CN112492054A (zh) * 2020-11-05 2021-03-12 杭州萤石软件有限公司 用户数据报协议udp端口的复用方法、装置及设备
CN112631788A (zh) * 2021-01-06 2021-04-09 上海哔哩哔哩科技有限公司 数据传输方法及数据传输服务器
CN112631788B (zh) * 2021-01-06 2023-11-28 上海哔哩哔哩科技有限公司 数据传输方法及数据传输服务器

Also Published As

Publication number Publication date
CN111314273B (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
CN111314273B (zh) 基于udp的数据传输方法和连接装置
US10693969B2 (en) Electronic device using logical channels for communication
TWI361579B (en) Communication apparatus and network search method thereof
WO2021121370A1 (zh) 用于消息队列的消息丢失检测方法和装置
US20150067146A1 (en) Custom correlation of a distributed business transaction
CN110381042B (zh) 一种平滑重启服务的方法、装置、介质和电子设备
CN108139936A (zh) 提供对自部署的虚拟应用中的虚拟机的串行端口的访问的方法、装置和***
CN108965359B (zh) 通信方法、通信装置、可读介质和电子设备
CN109451354B (zh) 一种唤醒终端的方法及终端
JP2011029896A (ja) 遠隔起動システムおよびその方法
Yao et al. Design and implementation of IOT gateway based on embedded μTenux operating system
WO2024114796A1 (zh) 车辆的usb固件升级的方法、装置及车辆
CN104570967B (zh) 基于Android***的远程控制方法及***
US20180270872A1 (en) Method and apparatus for establishing communication connection between mobile device and fixed device
CN116881040A (zh) 一种业务操作处理方法、装置、电子装置和存储介质
CN107197088A (zh) 基于安卓移动设备的截图方法与装置
CN111741087A (zh) 远程升级方法、终端设备及可读性存储介质
CN111338673A (zh) 设备调试方法、装置、电子设备及存储介质
CN112416641B (zh) 主从架构中被控端节点重启检测方法及主控端节点
CN114185804A (zh) 一种接口测试方法、装置及终端设备
CN113591006A (zh) 一种基于WebSocket的Web扩展方法和装置
WO2018082104A1 (zh) 一种辅助定位数据的共享方法及终端
CN107102874B (zh) 一种应用程序并发安装方法及***
JP5787016B2 (ja) 通信機能付情報処理装置およびその処理方法
TWI791316B (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