- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这更多是一种观察,也是对处理这种情况的最佳方法的建议。
我有两个线程,一个只是泵入数据,另一个接收数据并在发送另一个套接字之前做很多工作。两个线程都通过域套接字连接。这里使用的协议(protocol)是 UDP。我不想使用 TCP,因为它是基于流的,这意味着如果队列中的空间很小,我的数据就会被拆分和发送。这很糟糕,因为我正在发送不应该拆分的数据。因此我使用了 DGRAM。有趣的是,当发送线程通过抽取如此多的数据压倒了接收线程时,在某些时候域套接字缓冲区被填满并且 sendto() 返回 ENOBUFS。我认为如果发生这种情况, sendto() 将阻塞,直到缓冲区可用。这将是我想要的行为。然而,情况似乎并非如此。我以一种相当奇怪的方式解决了这个问题。
The udp_output function in /sys/netinet/udp_usrreq.c, seems clear:
/*
* Calculate data length and get a mbuf
* for UDP and IP headers.
*/
M_PREPEND(m, sizeof(struct udpiphdr), M_DONTWAIT);
if (m == 0) {
error = ENOBUFS;
if (addr)
splx(s);
goto release;
}
最佳答案
我不确定为什么 sendto() 没有阻止你……但你可以在每次调用 sendto() 之前尝试调用这个函数:
#include <stdio.h>
#include <sys/select.h>
// Won't return until there is space available on the socket for writing
void WaitUntilSocketIsReadyForWrite(int socketFD)
{
fd_set writeSet;
FD_ZERO(&writeSet);
FD_SET(socketFD, &writeSet);
if (select(socketFD+1, NULL, &writeSet, NULL, NULL) < 0) perror("select");
}
关于macos - sendto() dgrams 不会阻塞 OSX 上的 ENOBUFS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555101/
我正在对 Windows 7 64 位操作系统上包含大量数据的数据库进行大量调用。由于调用正在排队,我得到了错误(在第一个错误之后的 HTTP 调用): Error: connect ENOBUFS
在执行以下行时,错误“ spawnSync/bin/sh ENOBUFS ”在我的 NodeJs 应用程序中非系统地产生: child_process.execSync(`cd /tmp/myFold
我想做的事情: 我编写了一个使用持久 Websocket 连接(无长轮询)的 Node.js 客户端/服务器应用程序。我想对我的服务器进行压力测试,以调整其性能并了解限制,以便我可以因过载而阻止新的传
我目前在 Tru64 上运行一个旧系统,它涉及大量使用 sendto() 函数的 UDP 套接字。套接字在我们的代码中用于向/从各种进程发送消息,然后最终发送到远程连接的胖客户端应用程序。有时,胖客户
这更多是一种观察,也是对处理这种情况的最佳方法的建议。 我有两个线程,一个只是泵入数据,另一个接收数据并在发送另一个套接字之前做很多工作。两个线程都通过域套接字连接。这里使用的协议(protocol)
我有以下设置: node.js 客户端向 node.js 服务器发出端到端请求。不到一分钟后,客户端失败并出现错误 ENOBUFS。 客户: (function(){ var load
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 1年前关闭。 Improve this questi
我无意中发现了 Solaris 10 套接字和其他 Linux/*NIX 套接字之间的特殊区别。示例: int temp1, rc; temp1 = 16*1024*1024; /* from co
我希望这里有人可以帮助我,我自己解决这个问题的运气并不好。我在 Cygwin 上运行 node.js 版本 0.3.1。我正在使用 Connect 和 Socket.io。我似乎在 DNS 或其他方面
我是一名优秀的程序员,十分优秀!