硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3193|回复: 3
收起左侧

[RL-TCPnet] 怎样在“高效tcp框架”里使用TCP_TYPE_KEEP_ALIVE标记?

[复制链接]

23

主题

211

回帖

280

积分

高级会员

积分
280
发表于 2019-4-29 10:48:29 | 显示全部楼层 |阅读模式
hi硬汉,我看在rl-tcpnet例程里 “V5-1009_RL-TCPnet实验_TCP服务器(RTX)”和“V5-1030_RL-TCPnet实验_高效的事件触发框架(RTX)”两个例程使用了不同的socket申请方式,在第一个例程里,是用tcp_get_state获取的socket,然后在callback里处理接收, TCP_TYPE_KEEP_ALIVE可以作为参数传递给tcp_get_state函数用以保持tcp连接。

但是第二个例程里是用socket()函数获取的socket,然后在循环里处理接收,我在手册里找了半天也没找到可以加类似 TCP_TYPE_KEEP_ALIVE参数的地方,超时设置里最大也就600s,那么是否这种形式的连接需要由用户来设计心跳包以保持tcp连接呢?谢谢。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107262
QQ
发表于 2019-4-29 11:34:52 | 显示全部楼层
QQ截图20190429113406.jpg
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
 楼主| 发表于 2019-4-29 13:12:20 | 显示全部楼层
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
 楼主| 发表于 2019-4-29 13:32:09 | 显示全部楼层

看文档描述,这个每条命令都得单独设施一次是么?比如我要设置阻塞和保活就得这样:

sck_mode = 1;
res = ioctlsocket (sock, FIONBIO, &sck_mode);


sck_mode = 1;
res = ioctlsocket (sock, FIO_KEEP_ALIVE, &sck_mode);


是这样么?

还有就是,我看官方都是阻塞去等数据,好像处理速度比“高效框架”例程更快一些啊,我实测“高效框架”收到数据后再回发,得100ms左右,而且还得多开一个任务提供tcp tick;而用这种阻塞处理的方式,或者你“V5-1001_RL-TCPnet实验_工程移植模板(RTX)”里的回调函数方式,修改一下,再回发,只要不到20ms啊,更推荐哪种个?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-23 13:37 , Processed in 0.268185 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表