【技术实现步骤摘要】
一种报文传输方法、系统、电子设备及可读存储介质
[0001]本专利技术涉及通信领域,特别涉及一种报文传输方法
、
系统
、
电子设备及可读存储介质
。
技术介绍
[0002]当前
TCP
(
Transmission Control Protocol
,传输控制协议)已经成为
ICT
(
Information and Communications Technology
,信息与通讯技术)不可缺少的底层技术,在绝大部分的
CPU
(
Central Processing Unit
,中央处理器)上都会运行着
TCP/IP
(
Internet Protocol Address
,互联网协议地址)网络协议栈软件,用户态的应用程序以
socket
(套接字)的方式使用
TCP
功能,收发网络报文
。
发送报文的一般过程是,
APP
(
Application
,应用程序)调用
socket API
(
Application Program Interface
,应用程序接口)将数据传入网络协议栈,网络协议栈将数据放入
socket
发送缓冲区中,然后立即或通过定时器超时驱动发送这些数据,在发送流程中,网络协议栈将适当长度的数据封 ...
【技术保护点】
【技术特征摘要】
1.
一种报文传输方法,其特征在于,包括:将套接字的发送缓冲区划分为第一缓冲区和第二缓冲区;在所述第一缓冲区,为应用程序线程分配多个报文和多个报文描述符;多个所述报文和多个所述报文描述符一一对应;通过所述报文和其对应的报文描述符构造节点,并将所述节点添加到所述第一缓冲区的第一描述符链表;所述节点中的报文的报文载荷中拷贝有预设长度的应用程序数据;当所述第一描述符链表满足推送条件,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文
。2.
根据权利要求1所述的报文传输方法,其特征在于,所述为应用程序线程分配多个报文和多个报文描述符的过程包括:根据所述应用程序数据的总数据长度和单个报文的最大载荷长度为应用程序线程分配多个报文和多个报文描述符
。3.
根据权利要求1所述的报文传输方法,其特征在于,所述为应用程序线程分配多个报文和多个报文描述符之前,所述报文传输方法还包括:确定所述发送缓冲区对应的当前写入长度,若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符
。4.
根据权利要求3所述的报文传输方法,其特征在于,确定所述发送缓冲区对应的当前写入长度的过程包括:确定应用程序的输入参数中的总数据长度和所述发送缓冲区的剩余长度;将所述总数据长度和所述剩余长度中的较小值作为当前写入长度
。5.
根据权利要求4所述的报文传输方法,其特征在于,若当前写入长度满足预设条件,为应用程序线程分配多个报文和多个报文描述符之前,所述报文传输方法还包括:判断当前写入长度是否大于0;若是,判定所述当前写入长度满足所述预设条件;若否,判定所述当前写入长度不满足所述预设条件
。6.
根据权利要求4所述的报文传输方法,其特征在于,所述报文传输方法还包括:当检测到写入应用程序数据,在所述第一缓冲区添加当前写入序列号;确定所述发送缓冲区的剩余长度的过程包括:根据第一关系式计算所述发送缓冲区的剩余长度,所述第一关系式为
Lr=Lm
‑
(
Lc
‑
Ll
);其中,
Lr
为所述剩余长度,
Lm
为所述发送缓冲区的最大长度,
Lc
为所述当前写入序列号,
Ll
为写入序列号的左边界对应的序列号
。7.
根据权利要求1所述的报文传输方法,其特征在于,当所述第一描述符链表满足推送条件,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部之前,所述报文传输方法还包括:确定推入突发值;确定所述第一描述符链表中的所述节点的数量是否达到所述推入突发值;若是,判定所述第一描述符链表满足所述推送条件;若否,判定所述第一描述符链表不满足所述推送条件
。
8.
根据权利要求1所述的报文传输方法,其特征在于,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部之前,所述报文传输方法还包括:构造过渡队列;所述过渡队列为无锁队列;当所述第一描述符链表满足所述推送条件,将所述第一描述符链表中的头节点的地址写入所述过渡队列中;将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部的过程包括:从所述过渡队列中获取所述第一描述符链表的头节点的地址;将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部
。9.
根据权利要求8所述的报文传输方法,其特征在于,所述报文传输方法还包括:当所有应用程序数据均拷贝到所述报文的报文载荷中,将套接字设置为与待发送数据对应的第一状态,并将所述套接字的地址写入套接字队列;将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文的过程包括:当所述网络协议栈线程监测到所述套接字队列不为空,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文
。10.
根据权利要求9所述的报文传输方法,其特征在于,当所述网络协议栈线程监测到所述套接字队列不为空,将所述第一描述符链表的头节点的地址添加到所述第二缓冲区的第二描述符链表的尾部,以便网络协议栈线程根据所述第二描述符链表发送报文的过程包括:当所述网络协议栈线程监测到所述套接字队列不为空,从所述套接字队列...
【专利技术属性】
技术研发人员:刘富海,陈翔,
申请(专利权)人:苏州元脑智能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。