一种传输系统提升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报文的发送过程,可发现一般的UDP socket调用与TCPsocket调用存在的区别是,由于UDP是无连接系统,去掉了建立连接的过程,因此也无法使用recv()接口和send()接口来进行接收报文和发送报文;UDP报文的发送只能通过sendto()接口上携带目的地址参数,来说明发送的目的地。由于每次sendto()接口的目的地址不一样,导致UDP报文发送时,每个报文都需进行目的地址的选择,导致额外的性能损耗,特别是当通信为两个点之间,比如A计算机与B计算机之间,这种损耗,导致UDP报文发送效率较低。
因此,现有技术存在缺陷,需要改进。
发明内容
本发明的目的是克服现有技术的不足,提供一种传输系统提升UDP发送效率的方法,解决现有技术中,当UDP报文发送的通信为两个点之间时,由于每个报文都需要进行目的地址选择,导致发送效率较低的问题。
本发明的技术方案如下:一种传输系统提升UDP发送效率的方法,包括以下步骤:
步骤100:传输客户端调用第一socket()接口建立第一socket。
步骤200:传输客户端调用connect()接口,并设定目的地址,建立UDP socket的连接。
步骤300:传输服务端调用第二socket()接口建立第二socket。
步骤400:传输服务端调用bind()接口,绑定传输服务端的本地地址和端口;所述目的地址与所述本地地址为同一个地址。
步骤500:传输客户端调用send()接口发送第一个UDP报文,传输服务端调用recvfrom()接口接收第一个UDP报文。
步骤600:传输服务端根据recvfrom()接口获取的传输客户端传输信息,判断是否符合传输服务端的预期传输客户端。
步骤700:若符合传输服务端的预期传输客户端,传输服务端调用connect()接口,获取传输客户端地址作为对端地址,UDP socket进入connected连接状态。
步骤800:传输客户端调用send()接口发送UDP报文或调用recv()接口接收UDP报文。传输客户端调用第一socket()接口建立第一socket,在调用connect()接口后,为第一个UDP报文进行UDP报文发送目的地址的设定,目的地址即为传输服务端的本地地址,传输服务端调用第二socket()接口建立第二socket,调用bind()接口,同时绑定传输服务端的本地地址和端口,传输客户端调用send()接口向传输服务端发送第一个UDP报文,传输服务端调用recvfrom()接口接收第一个UDP报文后,获取传输客户端的传输信息,并且根据传输信息判断是否符合预期的传输客户端,若符合,传输服务端则调用connect()接口,作为传输服务端与传输客户端发送UDP报文时的对端地址,UDP socket进入connected连接状态,传输服务器与传输客户端进入connected的连接状态,连接后,传输服务端与传输客户端之间即可进行UDP报文的接收和发送,在传输过程中,只需要对第一个UDP报文的发送进行发送目的地址进行选择,当传输客户端与传输服务端进入连接状态后,便可直接进行UDP报文的发送,无需在发送每一个UDP报文时,都进行发送目的地址的选择,有效的提高了UDP报文的发送效率;传输客户端只需要为最开始的1~2个UDP报文进行发送目的地址的选择,后续的UDP报文均可通过UDP socket连接的目的地址直接进行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报文时的对端地址,UDP socket进入connected连接状态,传输服务器与传输客户端进入connected的连接状态,连接后,传输服务端与传输客户端之间即可进行UDP报文的接收和发送,在传输过程中,只需要对第一个UDP报文的发送进行发送目的地址进行选择,当传输客户端与传输服务端进入连接状态后,便可直接进行UDP报文的发送,无需在发送每一个UDP报文时,都进行发送目的地址的选择,有效的提高了UDP报文的发送效率;传输客户端只需要为最开始的1~2个UDP报文进行发送目的地址的选择,后续的UDP报文均可通过UDP socket连接的目的地址直接进行UDP报文的发送,发送效率可提升10%-20%。
附图说明
图1为本发明的流程框图;
图2为判断传输客户端是否符合传输服务端预期传输客户端的流程图;
图3为传输客户端与传输服务端之间UDP报文传输的流程图。
具体实施方式
以下结合附图和具体实施例,对本发明进行详细说明。
请参照图1,本发明提供一种传输系统提升UDP发送效率的方法,包括以下步骤:
步骤100:传输客户端调用第一socket()接口建立第一socket。
步骤200:传输客户端调用connect()接口,并设定目的地址,建立UDP socket的连接。
步骤300:传输服务端调用第二socket()接口建立第二socket。
步骤400:传输服务端调用bind()接口,绑定传输服务端的本地地址和端口;所述目的地址与所述本地地址为同一个地址。
步骤500:传输客户端调用send()接口发送第一个UDP报文,传输服务端调用recvfrom()接口接收第一个UDP报文。
步骤600:传输服务端根据recvfrom()接口获取的传输客户端传输信息,判断是否符合传输服务端的预期传输客户端。
步骤700:若符合传输服务端的预期传输客户端,传输服务端调用connect()接口,获取传输客户端地址作为对端地址,UDP socket进入connected连接状态。
步骤800:传输客户端调用send()接口发送UDP报文或调用recv()接口接收UDP报文。传输客户端调用第一socket()接口建立第一socket,在调用connect()接口后,为第一个UDP报文进行UDP报文发送目的地址的设定,目的地址即为传输服务端的本地地址,传输服务端调用第二socket()接口建立第二socket,调用bind()接口,同时绑定传输服务端的本地地址和端口,传输客户端调用send()接口向传输服务端发送第一个UDP报文,传输服务端调用recvfrom()接口接收第一个UDP报文后,获取传输客户端的传输信息,并且根据传输信息判断是否符合预期的传输客户端,若符合,传输服务端则调用connect()接口,作为传输服务端与传输客户端发送UDP报文时的对端地址,UDP socket进入connected连接状态,传输服务器与传输客户端进入connected的连接状态,连接后,传输服务端与传输客户端之间即可进行UDP报文的接收和发送,在传输过程中,只需要对第一个UDP报文的发送进行发送目的地址进行选择,当传输客户端与传输服务端进入连接状态后,便可直接进行UDP报文的发送,无需在发送每一个UDP报文时,都进行发送目的地址的选择,有效的提高了UDP报文的发送效率;传输客户端只需要为最开始的1~2个UDP报文进行发送目的地址的选择,后续的UDP报文均可通过UDP socket连接的目的地址直接进行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报文时的对端地址,UDP socket进入connected连接状态,传输服务器与传输客户端进入connected的连接状态,连接后,传输服务端与传输客户端之间即可进行UDP报文的接收和发送,在传输过程中,只需要对第一个UDP报文的发送进行发送目的地址进行选择,当传输客户端与传输服务端进入连接状态后,便可直接进行UDP报文的发送,无需在发送每一个UDP报文时,都进行发送目的地址的选择,有效的提高了UDP报文的发送效率;传输客户端只需要为最开始的1~2个UDP报文进行发送目的地址的选择,后续的UDP报文均可通过UDP socket连接的目的地址直接进行UDP报文的发送,发送效率可提升10%-20%。
以上仅为本发明的较佳实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。