Linux - 没有可用的缓冲区 - 这是什么意思,我如何确定可用空间,以及如何使用空间来阻止它?

时间:2014-03-13 03:03:22

标签: linux arp sockets

我正在使用perl原始套接字发送大量任意原始数据包(没有任何恶意!),但是在我的send()调用失败并且“没有可用的缓冲区空间”之前,我只能得到大约14500个。

我猜测内核中的某些内容正在跟踪我发送的内容?我怎么能防止这种情况。我只是想发送每个数据包,没有必要等待回复或记住发送的内容。 (更新:我在“netstat”命令中注意到“CLOSE_WAIT”条目的加载 - 如何告诉内核不要这样做?)

它指的是什么是“缓冲空间”,有没有办法检查 可用的空间,所以当没有空间时我可以避免发送更多?或者 - 有没有办法“阻止”“发送()”,所以我从来没有遇到错误?

或者 - 是否有其他方式发送以太网数据包(例如:SYN),内核知道不在任何表中输入任何内容?

1 个答案:

答案 0 :(得分:1)

如果CLOSE_WAIT连接是你的:

  1. 您正在使用TCP,而不是原始套接字。
  2. 你没有关闭你的插座。
相关问题