问题标签 [recv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python:为什么这个对 recv 的非阻塞调用会阻塞?
我在线程的 $ init调用中有以下代码:
conn 是一个套接字,并作为参数传递给 $ init 每个线程都会收到一个唯一的套接字。在运行方法中,我有:
超时打印为 0.0,但“hi from threadname”仅在收到消息并且永远不会引发异常时打印出来!看起来好像 recv 方法阻塞了,但它为什么要这样做呢?
sockets - 套接字编程:为什么 recv() 和 read() 的行为不一样?
我用来select()
从标准输入接收数据。
代码在这里:
在这段代码中,recv()
总是会返回-1
,但read()
可以得到正确的数据。
我发现这read()
相当于recv()
使用flags
. 0
那么为什么我的代码中的行为recv()
和read()
不一样呢?
linux - 判断socket上是否还有Data剩余并丢弃
我正在 Linux 下编写一个从 TCP 套接字获取数据的接口。用户提供一个缓冲区来存储接收到的数据。如果提供的缓冲区太小,我只想返回一个错误。第一个问题是确定缓冲区是否太小。recv() 函数只返回实际写入缓冲区的字节数。如果我使用 recv() 联机帮助页上说明的 MSG_TRUNC 标志,它仍然会返回相同的结果。第二个问题是丢弃仍在套接字中排队的数据。因此,如果我确定我提供的缓冲区太小,我只想擦除留在套接字上的所有内容。除了再次关闭和打开套接字或只是接收直到什么都没有之外,还有其他方法吗?此致
托比
linux - 判断socket上是否还有Data剩余并丢弃
我正在 Linux 下编写一个从 TCP 套接字获取数据的接口。用户提供一个缓冲区来存储接收到的数据。如果提供的缓冲区太小,我只想返回一个错误。第一个问题是确定缓冲区是否太小。recv() 函数只返回实际写入缓冲区的字节数。如果我使用 recv() 联机帮助页上说明的 MSG_TRUNC 标志,它仍然会返回相同的结果。第二个问题是丢弃仍在套接字中排队的数据。因此,如果我确定我提供的缓冲区太小,我只想擦除留在套接字上的所有内容。除了再次关闭和打开套接字或只是接收直到什么都没有之外,还有其他方法吗?最好的问候 <
一个建议是只接收直到什么都没有留下(我返回 0)——但结果不是必须等待预设的超时(在这种情况下是 5 秒?),因为每次我调用 recv 时它都会等待数据或超时?
python - 有没有办法知道 Python 套接字中有多少数据可以接收?
我发现我必须使用 ioctl。这里有类似的问题:
我的问题是:
- Python 中的 FIONREAD 等价物是什么?如何调用 sock.ioctl() 来获取可用的字节数?
- 如果我在 Windows 上使用 Python 2.5 会怎样?socket.ioctl 是 2.6 版中的新内容。
c - C中的简单TCP客户端服务模型:客户端不接收
我在 c 中制作了一个简单的 TCP 客户端-服务器,并尝试将消息从客户端发送到服务器,但我遇到了一些问题。服务器确实发送了消息(整数值> 0)但客户端无法接收它(整数值> 0)这里是代码:客户端
服务器:
我得到的输出(首先启动服务器,然后是客户端)是服务器端:9 客户端:-1 hello
我正在使用 Ubuntu 11.04 和 gcc 编译器。
我希望有人可以提供帮助。谢谢
奥马尔
c - 在 C 中立即从套接字接收 TCP 有效负载(逐个数据包)
如何逐个数据包地从 C 中的开放网络套接字接收数据(字节流)?我想在套接字到达时立即从套接字读取数据(一旦数据包到达机器上)。
似乎当我在套接字上执行 read()(或 recv())调用时,我得到了 10,000+ 字节的整个 TCP 消息。相反,我想接收第一个 TCP 段有效负载,处理它,然后继续下一个,等等。
注意 - 我不想要原始数据包。只是 TCP 段数据有效负载。
另请注意 - 本质上,我想通过在数据到达时立即处理数据来最小化延迟,而不是等待整个 TCP 消息在 TCP 层累积。
任何想法将不胜感激,谢谢!
python - Python阻塞recv返回的数据少于要求的数据
我有一个 C 语言的回显服务器和一个 Python 的测试客户端。服务器有一个有限的读取缓冲区,例如 16 字节。当客户端发送超过 16 个字节时,它会先读取 16 个字节,然后写回客户端,然后再次读取。
我用 测试了服务器telnet
,我得到了与输入相同的字符串,即使它超过 16 个字节。但是,此 Python 客户端不起作用。
此客户端仅接收服务器写回的前 16 个字节。服务器日志确实显示了两次写入 (16 + 4)。Python 输出如下所示
我不确定为什么会发生这种情况,为什么阻塞recv()
返回的数据少于要求的数据?
c - C Windows 缓冲区大小
在 Windows 中,可以说我正在使用该recv
函数从套接字接收数据。我很好奇最佳缓冲区有多大?我可以把它做成字节,1024
或者我可以把它做成51200
字节,或者更大。我想知道哪个对性能更好。
这不仅适用于recv
函数,比如说我正在读取一个大文本文件,我想要一个非常大的缓冲区还是一个更小的缓冲区?
c++ - 我应该如何干净利落地跳出 recv 循环?
我recv
在循环中使用该函数来接收网络数据,但是假设我想在循环中停止接收数据。我可以打破循环,但这似乎不是一种非常干净的方法来停止接收数据。
那么有什么方法可以干净地停止接收数据,或者只是打破循环好吗?这是 HTTP GET/POST 请求。
这是我正在使用的简化版: