当前位置: 技术问答>linux和unix
流量控制问题
来源: 互联网 发布时间:2015-11-27
本文导语: 我做了一个网口转串口,可是网口速度要比串口速度快很多,那我怎么才能保证每个网络数据都正确到达,而不被后面的数据冲掉呢?怎么进行流量控制呢? | 1、你可以限制网卡速度,我知...
我做了一个网口转串口,可是网口速度要比串口速度快很多,那我怎么才能保证每个网络数据都正确到达,而不被后面的数据冲掉呢?怎么进行流量控制呢?
|
1、你可以限制网卡速度,我知道可以限制成10M,不知道是否还可以进一步限制
2、如果网络两端都是你自己的程序,你可以修改程序,在客户端进行速度限制。也可以通过服务器端发标志的方式控制客户端的速度。
3、服务器端可以设置缓冲区,当缓冲区快慢时通知客户端暂停传送。
4、你可以把缓冲区设置到磁盘,串口从磁盘读数据。这样缓冲几乎没有容量限制,也就不需要限制速度了。
2、如果网络两端都是你自己的程序,你可以修改程序,在客户端进行速度限制。也可以通过服务器端发标志的方式控制客户端的速度。
3、服务器端可以设置缓冲区,当缓冲区快慢时通知客户端暂停传送。
4、你可以把缓冲区设置到磁盘,串口从磁盘读数据。这样缓冲几乎没有容量限制,也就不需要限制速度了。
|
不用解析TCP的,就是协议层之下的驱动问题,不要搞的那么复杂。
直接在网卡数据传给串口的地方设置一个FIFO,实际上在需求上串口的速度本身就是很慢的,
季希望于这个环节不丢包本身就是不现实的。
至于这个FIFO怎么管理就看你自己的需求了。
做过网卡驱动的话参照网卡内部的FIFO管理机制应该不难处理,
协议栈挂载设备当然是挂载串口设备。
如果你不是这样的逻辑,
请给出具体的设备调用逻辑。
直接在网卡数据传给串口的地方设置一个FIFO,实际上在需求上串口的速度本身就是很慢的,
季希望于这个环节不丢包本身就是不现实的。
至于这个FIFO怎么管理就看你自己的需求了。
做过网卡驱动的话参照网卡内部的FIFO管理机制应该不难处理,
协议栈挂载设备当然是挂载串口设备。
如果你不是这样的逻辑,
请给出具体的设备调用逻辑。
|
缓冲区设置在硬盘上不是一个好点子,硬盘读写的速度很可能产生另一个瓶颈问题。
这个缓冲区不用太大,直接在内存中开就可以了。嵌入式在FLASH中开缓冲更是愚蠢之极的方法。
具体这个缓冲区的大小就需要根据实际的情况自己把握了,不过从网卡使用的一般14k的FIFO来估计有40m绝对的够用了。
这个缓冲区不用太大,直接在内存中开就可以了。嵌入式在FLASH中开缓冲更是愚蠢之极的方法。
具体这个缓冲区的大小就需要根据实际的情况自己把握了,不过从网卡使用的一般14k的FIFO来估计有40m绝对的够用了。