一种传输系统提升UDP发送效率的方法与流程

文档序号:18523670发布日期:2019-08-24 10:02阅读:375来源:国知局
一种传输系统提升UDP发送效率的方法与流程

本发明涉及文件传输领域,尤其涉及一种传输系统提升udp发送效率的方法。



背景技术:

在一般通用操作系统中,比如windows、linux、macos、android等系统,发送tcp报文的过程为:客户端的socket()->connect()接口建立连接,然后调用recv()接口和send()接口进行接收和发送,服务器的socket()->bind()->accept()接口建立连接,然后调用recv()接口和send()接口进行接收和发送;发送udp报文的过程为:传输客户端的socket()接口建立socket,然后调用recvfrom()接口和sendto()接口进行接收和发送,传输服务端的socket()->bind()接口建立连接,然后调用recvfrom()接口和sendto()接口进行接收和发送。从tcp报文、udp报文的发送过程,可发现一般的udpsocket调用与tcpsocket调用存在的区别是,由于udp是无连接系统,去掉了建立连接的过程,因此也无法使用recv()接口和send()接口来进行接收报文和发送报文;udp报文的发送只能通过sendto()接口上携带目的地址参数,来说明发送的目的地。由于每次sendto()接口的目的地址不一样,导致udp报文发送时,每个报文都需进行目的地址的选择,导致额外的性能损耗,特别是当通信为两个点之间,比如a计算机与b计算机之间,这种损耗,导致udp报文发送效率较低。

因此,现有技术存在缺陷,需要改进。



技术实现要素:

本发明的目的是克服现有技术的不足,提供一种传输系统提升udp发送效率的方法,解决现有技术中,当udp报文发送的通信为两个点之间时,由于每个报文都需要进行目的地址选择,导致发送效率较低的问题。

本发明的技术方案如下:一种传输系统提升udp发送效率的方法,包括以下步骤:

步骤100:传输客户端调用第一socket()接口建立第一socket。

步骤200:传输客户端调用connect()接口,并设定目的地址,建立udpsocket的连接。

步骤300:传输服务端调用第二socket()接口建立第二socket。

步骤400:传输服务端调用bind()接口,绑定传输服务端的本地地址和端口;所述目的地址与所述本地地址为同一个地址。

步骤500:传输客户端调用send()接口发送第一个udp报文,传输服务端调用recvfrom()接口接收第一个udp报文。

步骤600:传输服务端根据recvfrom()接口获取的传输客户端传输信息,判断是否符合传输服务端的预期传输客户端。

步骤700:若符合传输服务端的预期传输客户端,传输服务端调用connect()接口,获取传输客户端地址作为对端地址,udpsocket进入connected连接状态。

步骤800:传输客户端调用send()接口发送udp报文或调用recv()接口接收udp报文。传输客户端调用第一socket()接口建立第一socket,在调用connect()接口后,为第一个udp报文进行udp报文发送目的地址的设定,目的地址即为传输服务端的本地地址,传输服务端调用第二socket()接口建立第二socket,调用bind()接口,同时绑定传输服务端的本地地址和端口,传输客户端调用send()接口向传输服务端发送第一个udp报文,传输服务端调用recvfrom()接口接收第一个udp报文后,获取传输客户端的传输信息,并且根据传输信息判断是否符合预期的传输客户端,若符合,传输服务端则调用connect()接口,作为传输服务端与传输客户端发送udp报文时的对端地址,udpsocket进入connected连接状态,传输服务器与传输客户端进入connected的连接状态,连接后,传输服务端与传输客户端之间即可进行udp报文的接收和发送,在传输过程中,只需要对第一个udp报文的发送进行发送目的地址进行选择,当传输客户端与传输服务端进入连接状态后,便可直接进行udp报文的发送,无需在发送每一个udp报文时,都进行发送目的地址的选择,有效的提高了udp报文的发送效率;传输客户端只需要为最开始的1~2个udp报文进行发送目的地址的选择,后续的udp报文均可通过udpsocket连接的目的地址直接进行udp报文的发送,发送效率可提升10%-20%。

进一步地,所述的传输客户端传输信息为传输客户端的地址信息、第一个udp报文内容。

进一步地,所述步骤600进一步包括以下步骤:

步骤601:传输服务端根据recvfrom()接口获取的传输客户端的地址信息、第一个udp报文内容。

步骤602:判断传输客户端是否符合传输服务器的预期传输客户端。

步骤603:若否,则丢弃第一个udp报文,传输客户端与传输服务端不建立连接。

步骤604:若是,进入步骤700。recvfrom()接口接收传输客户端发送的第一udp报文,并且获取传输客户端的地址信息、第一个udp报文内容,根据传输客户端的地址信息、第一个udp报文内容判断传输客户端是否符合传输服务端的预期传输客户端,若不符合,则丢弃第一个udp报文,并且停止传输客户端与传输服务端之间的连接,若是,传输客户端符合传输服务器的预期传输客户端,则可直接进入到步骤700中。

进一步地,所述步骤800进一步包括以下步骤:

步骤801:传输客户端调用send()接口向传输服务端发送udp报文。

步骤802:传输服务端调用recvfrom()接口接收udp报文。

步骤803:传输服务端调用sendto()接口向传输客户端发送udp报文。

步骤804:传输客户端调用recv()接口接收udp报文。在传输客户端与传输服务端建立连接后,传输客户端向传输服务端发送udp报文时,传输客户端调用send()接口向传输服务端发送数udp报文,传输服务端调用recvfrom()接口接收udp报文;在传输服务端向传输客户端发送udp报文时,传输服务端调用sendto()接口向传输客户端发送udp报文,传输客户端调用recv()接口接收udp报文,完成传输客户端与传输服务端udp报文的发送与接收。

进一步地,所述传输客户端与传输服务端之间的通信方式为点对点的通信。

进一步地,所述步骤603中,传输客户端与传输服务端不建立连接,结束连接过程,传输客户端将第一个udp报文的下一个udp报文,作为新的第一个udp报文,循环步骤100~步骤800。当传输客户端不符合传输服务器的预期传输客户端时,传输客户端与传输服务端不建立连接,结束连接过程,此时传输客户端将下一个udp报文作为新的第一个udp报文,开始重复步骤100~步骤800,即需要输入新的目的地址,与新的传输服务端之间进行第一个udp报文的发送,直达传输客户端符合对应传输服务端所预期传输客户端为止,一般只需为最开始的1~2个udp报文进行目的地址的选择,即只需要重复步骤100~步骤800的操作1~2次,传输客户端与传输服务端之间便可建立连接。

采用上述方案,本发明提供一种传输系统提升udp发送效率的方法,通过传输客户端调用第一socket()接口建立第一socket,在调用connect()接口后,为第一个udp报文进行udp报文发送目的地址的设定,目的地址即为传输服务端的本地地址,传输服务端调用第二socket()接口建立第二socket,调用bind()接口,同时绑定传输服务端的本地地址和端口,传输客户端调用send()接口向传输服务端发送第一个udp报文,传输服务端调用recvfrom()接口接收第一个udp报文后,获取传输客户端的传输信息,并且根据传输信息判断是否符合预期的传输客户端,若符合,传输服务端则调用connect()接口,作为传输服务端与传输客户端发送udp报文时的对端地址,udpsocket进入connected连接状态,传输服务器与传输客户端进入connected的连接状态,连接后,传输服务端与传输客户端之间即可进行udp报文的接收和发送,在传输过程中,只需要对第一个udp报文的发送进行发送目的地址进行选择,当传输客户端与传输服务端进入连接状态后,便可直接进行udp报文的发送,无需在发送每一个udp报文时,都进行发送目的地址的选择,有效的提高了udp报文的发送效率;传输客户端只需要为最开始的1~2个udp报文进行发送目的地址的选择,后续的udp报文均可通过udpsocket连接的目的地址直接进行udp报文的发送,发送效率可提升10%-20%。

附图说明

图1为本发明的流程框图;

图2为判断传输客户端是否符合传输服务端预期传输客户端的流程图;

图3为传输客户端与传输服务端之间udp报文传输的流程图。

具体实施方式

以下结合附图和具体实施例,对本发明进行详细说明。

请参照图1,本发明提供一种传输系统提升udp发送效率的方法,包括以下步骤:

步骤100:传输客户端调用第一socket()接口建立第一socket。

步骤200:传输客户端调用connect()接口,并设定目的地址,建立udpsocket的连接。

步骤300:传输服务端调用第二socket()接口建立第二socket。

步骤400:传输服务端调用bind()接口,绑定传输服务端的本地地址和端口;所述目的地址与所述本地地址为同一个地址。

步骤500:传输客户端调用send()接口发送第一个udp报文,传输服务端调用recvfrom()接口接收第一个udp报文。

步骤600:传输服务端根据recvfrom()接口获取的传输客户端传输信息,判断是否符合传输服务端的预期传输客户端。

步骤700:若符合传输服务端的预期传输客户端,传输服务端调用connect()接口,获取传输客户端地址作为对端地址,udpsocket进入connected连接状态。

步骤800:传输客户端调用send()接口发送udp报文或调用recv()接口接收udp报文。传输客户端调用第一socket()接口建立第一socket,在调用connect()接口后,为第一个udp报文进行udp报文发送目的地址的设定,目的地址即为传输服务端的本地地址,传输服务端调用第二socket()接口建立第二socket,调用bind()接口,同时绑定传输服务端的本地地址和端口,传输客户端调用send()接口向传输服务端发送第一个udp报文,传输服务端调用recvfrom()接口接收第一个udp报文后,获取传输客户端的传输信息,并且根据传输信息判断是否符合预期的传输客户端,若符合,传输服务端则调用connect()接口,作为传输服务端与传输客户端发送udp报文时的对端地址,udpsocket进入connected连接状态,传输服务器与传输客户端进入connected的连接状态,连接后,传输服务端与传输客户端之间即可进行udp报文的接收和发送,在传输过程中,只需要对第一个udp报文的发送进行发送目的地址进行选择,当传输客户端与传输服务端进入连接状态后,便可直接进行udp报文的发送,无需在发送每一个udp报文时,都进行发送目的地址的选择,有效的提高了udp报文的发送效率;传输客户端只需要为最开始的1~2个udp报文进行发送目的地址的选择,后续的udp报文均可通过udpsocket连接的目的地址直接进行udp报文的发送,发送效率可提升10%-20%。

所述的传输客户端传输信息为传输客户端的地址信息、第一个udp报文内容。

请参照图2,所述步骤600进一步包括以下步骤:

步骤601:传输服务端根据recvfrom()接口获取的传输客户端的地址信息、第一个udp报文内容。

步骤602:判断传输客户端是否符合传输服务器的预期传输客户端。

步骤603:若否,则丢弃第一个udp报文,传输客户端与传输服务端不建立连接。

步骤604:若是,进入步骤700。recvfrom()接口接收传输客户端发送的第一udp报文,并且获取传输客户端的地址信息、第一个udp报文内容,根据传输客户端的地址信息、第一个udp报文内容判断传输客户端是否符合传输服务端的预期传输客户端,若不符合,则丢弃第一个udp报文,并且停止传输客户端与传输服务端之间的连接,若是,传输客户端符合传输服务器的预期传输客户端,则可直接进入到步骤700中。

请参照图3,所述步骤800进一步包括以下步骤:

步骤801:传输客户端调用send()接口向传输服务端发送udp报文。

步骤802:传输服务端调用recvfrom()接口接收udp报文。

步骤803:传输服务端调用sendto()接口向传输客户端发送udp报文。

步骤804:传输客户端调用recv()接口接收udp报文。在传输客户端与传输服务端建立连接后,传输客户端向传输服务端发送udp报文时,传输客户端调用send()接口向传输服务端发送数udp报文,传输服务端调用recvfrom()接口接收udp报文;在传输服务端向传输客户端发送udp报文时,传输服务端调用sendto()接口向传输客户端发送udp报文,传输客户端调用recv()接口接收udp报文,完成传输客户端与传输服务端udp报文的发送与接收。

所述传输客户端与传输服务端之间的通信方式为点对点的通信。

所述步骤603中,传输客户端与传输服务端不建立连接,结束连接过程,传输客户端将第一个udp报文的下一个udp报文,作为新的第一个udp报文,循环步骤100~步骤800。当传输客户端不符合传输服务器的预期传输客户端时,传输客户端与传输服务端不建立连接,结束连接过程,此时传输客户端将下一个udp报文作为新的第一个udp报文,开始重复步骤100~步骤800,即需要输入新的目的地址,与新的传输服务端之间进行第一个udp报文的发送,直达传输客户端符合对应传输服务端所预期传输客户端为止,一般只需为最开始的1~2个udp报文进行目的地址的选择,即只需要重复步骤100~步骤800的操作1~2次,传输客户端与传输服务端之间便可建立连接。

综上所述,本发明提供一种传输系统提升udp发送效率的方法,通过传输客户端调用第一socket()接口建立第一socket,在调用connect()接口后,为第一个udp报文进行udp报文发送目的地址的设定,目的地址即为传输服务端的本地地址,传输服务端调用第二socket()接口建立第二socket,调用bind()接口,同时绑定传输服务端的本地地址和端口,传输客户端调用send()接口向传输服务端发送第一个udp报文,传输服务端调用recvfrom()接口接收第一个udp报文后,获取传输客户端的传输信息,并且根据传输信息判断是否符合预期的传输客户端,若符合,传输服务端则调用connect()接口,作为传输服务端与传输客户端发送udp报文时的对端地址,udpsocket进入connected连接状态,传输服务器与传输客户端进入connected的连接状态,连接后,传输服务端与传输客户端之间即可进行udp报文的接收和发送,在传输过程中,只需要对第一个udp报文的发送进行发送目的地址进行选择,当传输客户端与传输服务端进入连接状态后,便可直接进行udp报文的发送,无需在发送每一个udp报文时,都进行发送目的地址的选择,有效的提高了udp报文的发送效率;传输客户端只需要为最开始的1~2个udp报文进行发送目的地址的选择,后续的udp报文均可通过udpsocket连接的目的地址直接进行udp报文的发送,发送效率可提升10%-20%。

以上仅为本发明的较佳实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1