TCP/IP中定时器是怎么实现的?

时间:2021-11-15 22:33:50
那些超时重传或者等待有好及个定时器,他们是怎么实现的?最好有c源代码
谢谢!

12 个解决方案

#1


操作系统内核提供定时器。如果没有OS的话,那只好自己实现了。大致思路是一个定时器跟一个回调函数,当超时时调用。跟具体系统有关。

#2


看看TCP的源代码了,一个定时器就够了

#3


大家都说的这么简洁啊
我是这样实现的,不知道对不对:
先建立一个结构,包括建立时的时间starttime和超时时间interval
然后启动一个线程不断检测,当发现starttime+interval<=now的时候就是超时了
不过如果在单片机上实现的话,没有线程就不知道怎么办好了

#4


楼主要在单片机上实现呀!呵呵,单片机资源匮乏,可费了劲了!建议使用KEIL的RTX小操作系统,用tiny的就行。可以开多个task,task之间可用signal通讯,方便不少的。

#5


单片机上需要用到中断,而且数据传输速度肯定受影响。
不过单片机一般也不会太追求速度的。

#6


各位楼主怎么那么土啊

#7


?很土?
哪你说说你的高见。

#8


呵呵,他是说咱们什么年代了还用单片机,土。嘿嘿!殊不知,单片机的应用比PC可广的多了,而且是越来越多!

#9


哦,是这个意思?
哎,看来我这个人土了。。。呵呵

#10


参考书《TCP/IP高级程序设计》,里面有个例子实现了超时和重传

#11


我不是说你用单片机土,而是你的思维方式。
设计定时器的方法太多了,首先要考虑定时的精度和预期的定时器数量问题。
如果精度不高,又允许一定的时飘,可以采用伯克利的TCP/IP协议栈的经典设计。
如果精度很高,恐怕要在硬件的数量和分辨率上给于支持才行。
通常都是采用中断的方式,
谁还会用查询的方式啊?
而且还要考虑定时系统的复核(定时器的数量和分辨率),否则你的操作系统将不堪重负。

你觉得如何?

#12


to  johnsonest():我觉得你自己土,我看了好几个地方的贴子,你都不给出个答案,而是再到处指责别人怎么样怎么样,你厉害你就把解决方案写出来啊!别只说理论.
我题目上已经明确的写了,TCP/IP的定时器怎么实现,哪你说TCP/IP的定时器精度高还是不高?协议里定好的那些定时器,我当然是以他们为标准了。
我是不能成为什么好的工程师,你觉得你如何?

#1


操作系统内核提供定时器。如果没有OS的话,那只好自己实现了。大致思路是一个定时器跟一个回调函数,当超时时调用。跟具体系统有关。

#2


看看TCP的源代码了,一个定时器就够了

#3


大家都说的这么简洁啊
我是这样实现的,不知道对不对:
先建立一个结构,包括建立时的时间starttime和超时时间interval
然后启动一个线程不断检测,当发现starttime+interval<=now的时候就是超时了
不过如果在单片机上实现的话,没有线程就不知道怎么办好了

#4


楼主要在单片机上实现呀!呵呵,单片机资源匮乏,可费了劲了!建议使用KEIL的RTX小操作系统,用tiny的就行。可以开多个task,task之间可用signal通讯,方便不少的。

#5


单片机上需要用到中断,而且数据传输速度肯定受影响。
不过单片机一般也不会太追求速度的。

#6


各位楼主怎么那么土啊

#7


?很土?
哪你说说你的高见。

#8


呵呵,他是说咱们什么年代了还用单片机,土。嘿嘿!殊不知,单片机的应用比PC可广的多了,而且是越来越多!

#9


哦,是这个意思?
哎,看来我这个人土了。。。呵呵

#10


参考书《TCP/IP高级程序设计》,里面有个例子实现了超时和重传

#11


我不是说你用单片机土,而是你的思维方式。
设计定时器的方法太多了,首先要考虑定时的精度和预期的定时器数量问题。
如果精度不高,又允许一定的时飘,可以采用伯克利的TCP/IP协议栈的经典设计。
如果精度很高,恐怕要在硬件的数量和分辨率上给于支持才行。
通常都是采用中断的方式,
谁还会用查询的方式啊?
而且还要考虑定时系统的复核(定时器的数量和分辨率),否则你的操作系统将不堪重负。

你觉得如何?

#12


to  johnsonest():我觉得你自己土,我看了好几个地方的贴子,你都不给出个答案,而是再到处指责别人怎么样怎么样,你厉害你就把解决方案写出来啊!别只说理论.
我题目上已经明确的写了,TCP/IP的定时器怎么实现,哪你说TCP/IP的定时器精度高还是不高?协议里定好的那些定时器,我当然是以他们为标准了。
我是不能成为什么好的工程师,你觉得你如何?