python - Python:无法从 Socket 接收所有数据
问题描述
我正在使用下面的代码尝试从我的套接字接收所有数据。当我向设备发送 SCPI 命令“FETCh?\n”时,它会返回大量数据,而 recv() 函数只返回其中的一部分。
有谁知道如何解决这个问题?提前致谢!
class SCPI:
PORT = 5025
def __init__(self, host, port=PORT):
self.host = host
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s.connect((host, port))
self.f = self.s.makefile("rb")
def scan(self):
self.s.send("FETCh?\n")
data = self.s.recv(268435456)
print(data)
return data
解决方案
recv
返回至所要求的金额。您必须检查返回值并再次调用它,直到您收到预期的金额。实现一个缓冲区来累积数据并返回请求的确切数量。
推荐阅读
- javascript - 如何使用javascript过滤对象数组中的对象数组?
- wpf - 用计算的比率绑定 2 个文本框
- reactjs - 为什么测试会影响组件中未使用的减速器?
- javascript - 将数组中对象和嵌套对象的键值对重新组合到新数组中
- webview2 - webView.EnsureCoreWebView2Async(null) 给出一个异常类未注册
- django - Django:像 blog.user.username 这样的表达式是否在 Django 中执行了额外的数据库操作?
- python - 在 ndarrays 中查找最接近零的值
- json - 使用连接运行 json 的正确包?
- java - 获取异常“java.lang.NoSuchMethodError:org.openqa.selenium.WebElement.getDomAttribute(Ljava/lang/String;)Ljava/lang/String;” 在硒 4
- javascript - Javascript 如果可以打开应用程序的自定义 URL,而不是切换显示:阻止