1、 是否和server仿真程序有关?
2、 缓冲内存为何刚开始够用而后来不足?
3、 每个socket的收发缓冲区大小设置的原则是什么?
十分着急,请各位高手指点,非常谢谢!
vxWorks下缺省为每个socket创建256K的缓冲,60个socket用下来需要15M的内存。
发送出现ENOBUFS应该跟socket关系不是很大,发送申请拷贝内存的时候申请不到也会出现这个错误。检查一下内存空间吧,开始的时候网口bd表,收发缓冲都是空的,使用一段时间后,所有的bd上都要挂满2K内存,收发缓冲里面也会有未释放的内存。查一下出错的时候剩了多少内存就知道了。
当释放socket的时侯,因为还有未全部传送的数据,所以socket的buf并不是当时释放,而是过一会之后好像通过tcp的超时才释放的,所以会出上述现象,但tcp为什么这样处理,怎么改,我也搞不清楚,希望高手指导。
这个问题折腾我两个星期:(