Linux内核中是否存在传输字节事件?

时间:2010-06-06 11:05:33

标签: network-programming linux-kernel

我需要编写一个速率限制器,每次传输X字节时都会执行一些操作。 直截了当的是检查每个传输数据包的长度,但我认为这对我来说会很慢。 有没有办法使用某种网络事件,这将由传输的数据包/字节触发?

2 个答案:

答案 0 :(得分:1)

我想你可以看一下netfilter。

使用其(内核级别)api,您可以让网络事件触发自定义代码,在将其传递给应用程序之前修改收到的消息,等等。

http://www.netfilter.org/

答案 1 :(得分:0)

实际上它依赖于协议。但是对于TCP,您可以setsockopt SO_RCVLOWAT选项来定义允许读取操作的最小字节数(水印)。 如果您还需要强制执行最大大小,请使用SO_RCVBUF调整接收缓冲区大小。