理清udp,tcp 缓存区的

1.UDP

 首先这里说的缓存区不是指的我们在调用recv 或send函数时的我们自己分配的 内存(buf)

  _1 UDP没有UDP发送缓存区,  其原因是因为UDP是不可靠的连接方式, 应用程序的数据(也就是我们send()函数发出去的数据)是沿着协议栈向下传递,以系统约定的方式拷贝到内核缓存区, 当数据从链路层发送出去后,就删除内核缓存区中数据。当我们调用send 返回的字节数表示的是数据进入链路层的数据大小。

_2 上面提到了 UDP 内存缓存区,这个是系统规定的,我们可以通过

 rmem_default — 默认的接收窗口大小。

 rmem_max — 接收窗口的最大大小。

 wmem_default — 默认的发送窗口大小。

 wmem_max — 发送窗口的最大大小

可以通过 sysctl 命令设置下面值

net.core.rmem_default = 256960

net.core.rmem_max = 256960

net.core.wmem_default = 256960

net.core.wmem_max = 256960

//下面提到的缓存区多少指的是 内存缓存区

UDP缺乏流量控制

1 UDP缺乏流量控制的概念

       UDP协议没有TCP协议所具有的滑动窗口概念,接收数据的时候直接将数据放到缓冲区中。如果用户不有及时地从缓冲区中将数据复制出来,后面到来的数据会接着向缓冲区中放入。当缓冲区满的时候,后面到来的数据会覆盖之前的数据造成数据的丢失。

2 缓冲区溢出对策

       解决UDP接收缓冲区溢出的现象需要根据实际情况确定,一般可以用增大接收数据缓冲区和接收方接收单独处理的方法来解决局部的UDP数据接收缓冲区溢出问题。

UDP协议中的数据报文截断

       当使用UDP协议接收数据的时候,如果应用程序传入的接收缓冲区的大小小于到来的数据大小时,接收缓冲区会保存最大可能接收到的数据,其他的数据将会丢失,并且有MSG_TRUNC的标志。

http://www.cnblogs.com/li-hao/archive/2011/11/21/2257596.html

http://www.isnowfy.com/udp-buffer/ 

http://blog.chinaunix.net/uid-20382483-id-3793066.html

参考

你可以按照以下步骤来快速理清 Keil 5 工程: 1. 打开 Keil 5 软件并导入你的工程文件。点击 "Project" 菜单,然后选择 "Open Project" 来打开工程文件。 2. 确保你的工程文件中的所有源文件和头文件都已正确添加到工程中。如果有文件缺失,你可以使用 "Add Files to Group" 功能添加它们。 3. 检查工程的目录结构,确保所有的文件都被正确地组织在适当的文件夹中。你可以使用 "Create Folder" 功能来创建新的文件夹,并使用 "Move Files to" 功能将文件移动到相应的文件夹中。 4. 确定每个源文件的编译顺序。在工程窗口中,右键单击源文件,然后选择 "Options for File"。在弹出的对话框中,选择 "C/C++" 选项卡,然后调整编译顺序。 5. 配置编译选项和链接选项。在 "Project" 菜单中选择 "Options for Target"。在弹出的对话框中,你可以设置编译器选项、链接器选项和调试选项,以满足你的项目需求。 6. 检查工程的依赖关系。在工程窗口中,右键单击工程名称,然后选择 "Manage Project Items"。在弹出的对话框中,你可以查看和管理工程的依赖关系,确保所有的文件都正确地相互依赖。 7. 构建和调试工程。点击 "Project" 菜单,然后选择 "Build" 来编译工程。如果编译成功,你可以使用 "Debug" 功能进行调试。 通过按照这些步骤,你可以快速理清 Keil 5 工程,并开始进行开发和调试。祝你好运!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值