LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1054|回复: 11

流量控制问题

[复制链接]
发表于 2006-6-7 09:43:54 | 显示全部楼层 |阅读模式
要从socket读取数据发送到串口上,由于网络速度比串口速度快,为了避免数据丢失,应该怎么进行流量控制那??
发表于 2006-6-7 18:09:08 | 显示全部楼层
使用缓冲区,或者简单地,读一定数量地,写一定数量,然后再读
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-8 11:13:08 | 显示全部楼层
那socket收到得前一个数据很可能被后一个数据覆盖啊
回复 支持 反对

使用道具 举报

发表于 2006-6-11 15:47:23 | 显示全部楼层
如果入口速度大于出口速度时,要想进行流量控制,可以用往入口处发送停止帧的方法。
回复 支持 反对

使用道具 举报

发表于 2006-6-11 15:56:59 | 显示全部楼层
Post by 冷海儿
那socket收到得前一个数据很可能被后一个数据覆盖啊

还有这事?当你不调用recv/read的时候,socket还会自动读取,然后把以前的数据给覆盖?
按照我的理解,socket也有自己的缓冲区,它可能会预接收一些数据,但这些数据如果不被用户读走的话,一直会存在缓冲区内,然后后通过流量控制(TCP)的方法,来告诉发送端停止发送,或者放慢发送速度,这些都是socket自动处理的,不需要用户干预的。所以不应该会出现你所说的情况。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-12 10:34:16 | 显示全部楼层
那要是从socket读取然后发到串口上去,由于串口速度慢,就有可能出现数据覆盖吧?
回复 支持 反对

使用道具 举报

发表于 2006-6-12 19:23:38 | 显示全部楼层
Post by 冷海儿
那要是从socket读取然后发到串口上去,由于串口速度慢,就有可能出现数据覆盖吧?

你难道没法知道什么时候串口可以写而不会覆盖?
如果不能的话,那是有些问题了。我对串口不懂,不知道,感觉上应该有办法的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-13 11:08:19 | 显示全部楼层
我是个新手,有很多地方不懂,所以请大家多多指教!!
回复 支持 反对

使用道具 举报

发表于 2006-6-14 21:53:03 | 显示全部楼层
对于串口 (或者网络设备), 如果你发送的太 "快", 那么是根本写不进的, 楼主看看 write 的 man 就知道了.

相比发送的快与慢, 传输速率才是串口通讯中真正需要考虑的问题. 嘿嘿, 怎么设置传输速率呢, 既然楼主没问, 那我就不说了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-15 09:49:31 | 显示全部楼层
串口速率要是设置为9600k,网速为100m那么从socket收到的数据1发到串口,然后数据2接着发到串口,能保证数据1数据2都正确到达么?
回复 支持 反对

使用道具 举报

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

本版积分规则

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