python – OS X UDP发送错误:55没有可用的缓冲区空间
|
当我在OSX10.9.1上的python3.3中实现RUDP时,我注意到以下代码实际上并没有像它在linux上那样做:(无论哪种语言,C,Java和C#/ Mono的相同行为都无关紧要)
这段代码只是将大量udp数据包写入8.8.8.8,这些数据包在4跳后丢失,因此它们不应该到达目的地,只是为了模拟传出流量. 问题: 这段代码抛出一个OSError(55,’没有可用的缓冲区空间’)错误,而在Linux(Windows也是如此)它抛出一个BlockingIOError,这很好,因为它是一个非阻塞套接字. 因此,在Linux和Windows上,套接字在OSX上运行正常,这是一个OSError,这很糟糕. 但真正有趣的是,即使我将此套接字置于阻塞模式,此代码仍会在OSX上引发错误.在Linux和Windows上,这根本不会引发任何错误,正如预期的那样,它只会阻塞. 这是基于BSD的系统的实现细节吗?或者我错过了一些重要的网络设置? [编辑] 我忘了提到我在千兆位局域网中测试这种行为.我认为这就是问题所在.我连接到100mbit网络,问题已经消失,即使300mbit wlan问题没有发生. 现在我认为这是连接到高速网络时的一些OSX特定行为. [编辑 – 决赛] http://lists.freebsd.org/pipermail/freebsd-hackers/2004-January/005369.html 在BSD系统上发送到NEVER块,文档是错误的.当连接到高速兰特时混合了一些OSX特定问题.总的来说:只是不要认为sendto块,它不在BSD上.好事:如果你知道,你可以考虑到这一点. 最佳答案 我不认为你的意思是绑定套接字.这应该只在您计划收听的服务器端完成.如果你放弃绑定调用会发生什么?例如: (编辑:南阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python – 查找numpy数组中每行的最大值以及相同大小的另一
- python – 如何在Linux上打包Kivy IOS应用程序?
- python – 将几个正则表达式合并到一个RE中
- python – 将数字字符引用表示法转换为unicode字符串
- Django迁移是否应该在源代码控制中生效?
- 创建一个包含来自另一个字典的特定键值对的Python字典
- python – sklearn pipeline – 在管道中应用多项式特征转换
- python – 如何动态调用类中的方法使用方法名分配给变量
- python – 跨多个链式函数的namedTuples定义
- 在python中公开C函数并在C中嵌入python
