luasocket的问题

2023-12-06

我试图从 lua 套接字读取一些(二进制)数据,但上面的代码不会终止重复循环。我如何知道流已到达末尾?

client = require("socket")
client = socket.connect("www.google.com",80)
client:send("GET / HTTP/1.1\n\n")
repeat
  print "read"
  line = client:receive(512)
  print "read done"
  print(#line)
until line==""

print "all done"

Output is
read
read done
512
read

Update

问题似乎是 receive(number) 形式需要确切的 number 字节并等待它们。但如果我不知道还剩下多少字节,该怎么办? (http请求只是一个例子,我指的是从套接字读取字节的通用请求)

卢阿5.1.3


好的,我找到了这个解决方案

local socket = require("socket")
client = socket.connect("www.google.com",80)
client:send("GET / HTTP/1.1\n\n")
client:settimeout(1)
repeat
  print "read"
  line,err,rest = client:receive(512)
  print "read done"
  if line then print(line) end
  if rest then print(rest) end
until err

print "all done"

缺点是settimeout,因为请求至少需要1秒,任何超过1秒的网络延迟都会导致错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

luasocket的问题 的相关文章

  • Python:监听两个端口

    import socket backlog 1 Number of queues sk 1 socket socket socket AF INET socket SOCK STREAM sk 2 socket socket socket
  • 如何通过 Python socket.send() 发送字符串以外的任何内容

    我对 Python 编程非常陌生 但出于必要 我必须快速地将一些东西组合在一起 我正在尝试通过 UDP 发送一些数据 除了当我执行 socket send 时 我必须以字符串形式输入数据之外 一切都正常 这是我的程序 这样你就可以看到我在做
  • 如何从 Lua 字符串中删除所有特殊字符、标点符号和空格?

    在Lua中 我只能找到其他语言的示例 如何从字符串中删除所有标点符号 特殊字符和空格 所以 举例来说 s t r i p p e d会成为stripped In Lua 模式 https www lua org manual 5 3 man
  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • Lua(命令行)执行后保持打开状态

    我已经广泛寻找这个但我似乎找不到它 有什么方法可以执行Lua通过双击脚本 在中执行它 Lua Command Line 并在执行后保持打开状态 例如 print Hello World 该代码可以编译并运行 但是如果我双击hello lua
  • 为什么socket会干扰selenium?

    我编写了一个 python 脚本来使用套接字检查互联网连接 检查网络连接 https stackoverflow com questions 3764291 checking network connection 然后使用 selenium
  • 服务器套接字在 Close_Wait 中挂起

    场景如下 我正在从 C 服务器应用程序向客户端发送大量数据 突然数据流停止 客户端没有数据更新并且端口被阻塞 发生这种情况时 服务器端症状是 Close Wait 在该端口 netstat 操作将在日志中阻塞 错误代码 135 无法从客户端
  • net.Socket.writable、net.Socket.readable 属性不是官方 Node.js API 的一部分

    我想知道为什么 net Socket writable 和 net Socket read 属性不是官方 Node js API 的一部分 这是否意味着最好不要使用这些属性 因为它是将来可能会改变的内部内容 它们是 但不是你正在寻找的地方
  • Linq 是如何工作的(在幕后)?

    我正在考虑为 Lua 制作类似 Linq 的东西 并且我大致了解 Linq 的工作原理 但想知道是否有一篇好文章 或者是否有人可以解释 C 如何使 Linq 成为可能 注意 我的意思是在幕后 比如它如何生成代码绑定等等 而不是最终用户语法
  • winsock 和 BSD 套接字实现之间的差异

    Winsock 和 nix BSD 套接字实现之间的主要区别是什么 你可能想看看here http tangentsoft net wskfaq articles bsd compatibility html 为此 我要放弃一个区别 win
  • SO_REUSEPORT 可以在 Unix 域套接字上使用吗?

    Linux 内核 gt 3 9 允许通过设置在内核负载平衡的进程之间共享套接字SO REUSEPORT http lwn net Articles 542629 http lwn net Articles 542629 这如何用于类型的套接
  • Node.js Socket.IO 无法完全工作

    我运行一个侦听端口 5000 的独立服务器 当我通过 Netcat 或 Telnet 连接到它时 该应用程序不会在终端上打印任何内容 但在 Netcat Telnet 应用程序屏幕上 它显示连接已建立 var io require sock
  • 用于实时传输协议的开源 .net C# 库

    net中有好的RTP开源库吗 我的目的是用于音频和视频同步问题并提高每秒帧数速率 我对 RTP 不太了解 但你可能想看看本文 http www codeproject com KB IP Using RTP in Multicasting
  • 如何使用 HTML5 与 UDP 套接字通信?

    我拥有的 正在运行的 C 应用程序服务器 准备将数据发送到应该发送到 HTML5 页面或应用程序的客户端 我想要的是 考虑到 c 服务器和 HTML5 应用程序都是系统本地的 有没有办法使用 udp 端口 与 HTML5 进行通信 我知道的
  • Java 客户端到服务器未知来源

    我有一个简单的乒乓球游戏 需要通过网络工作 服务器将创建一个带有球和 2 个球棒位置的游戏 当客户端连接到服务器时 服务器将创建一个名为 PongPlayerThread 的新类 它将处理客户端到服务器的输入和输出流 我的服务器工作100
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 如何用单线程实现TCP上的全双工通道?

    我正在编写的网络库需要通过 TCP 套接字发送和接收消息 消息可以随时发送或接收 即应该作为全双工通道工作 我能够使用两个线程来实现这样的场景 调用 send 的主线程和一个主要在 receive 调用处阻塞的专用线程 我的问题是 是否可以
  • 如何编写可以与操作系统交互的VLC插件

    我需要找出是否有可能以及如何 我不关心C C Lua Python 制作一个VLC插件 其目的是由VLC播放器在特定时间调用视频流的将执行一些操作 我需要做的操作是打开 UDP 套接字并发送从当前播放的视频附带的文件中读取的一些数据 我需要
  • 可以访问每个套接字的 TCP 统计数据/信息吗? (C/C++)

    我需要一些信息 例如我创建的特定 TCP 套接字发生的重新发送包 数据包丢失的数量 有人知道如何直接从我的 C C 程序访问或请求此类信息吗 也许是 Linux 特有的东西 或者我是否需要 作为解决方法 捕获和分析我自己的流量 提前致谢 通

随机推荐

  • preg_match() 未知修饰符 '[' 帮助

    我有这个正则表达式来获取 YouTube 视频 ID lt v a zA Z0 9 lt 0 9 n lt v n 我从那里得到它 正则表达式解析 youtube yid 问题是我得到preg match Unknown modifier
  • OrientDB ETL 加载 CSV,其中顶点在一个文件中,边在另一个文件中

    我有一些数据位于 2 个 CSV 文件中 一个包含顶点 另一个文件包含另一个文件中的边 我正在研究如何使用 ETL 来设置它 已经接近但还没有完全实现 它基本上可以工作 但我的边缘有属性 我不确定它们是否正确加载 这个问题很有帮助 但我仍然
  • CorePlot MonoMac 绑定崩溃

    我正在尝试使用 Monomac 的 CorePlot 0 9 绑定 但这似乎是一项艰巨的任务 monotouch 示例的构建和运行没有任何问题 但我不需要那个 由于绑定中仅存在 CorePlotiOS dll 因此我必须自己为 osx 构建
  • 在 asp.net 中获取 BIOS 日期

    我检查管理员是否有许可证 所以我每月检查一次登录 现在我使用系统日期进行检查 但管理员更改系统日期 所以我想要日期 BIOS 日期 string crt val crt mont crt year dt v objdata select u
  • Powershell - 等待输入 10 秒 [重复]

    这个问题在这里已经有答案了 inputYN Read Host defaults to y in 10 sec y n 如果用户在 10 秒内没有提供任何输入 则默认 inputYN应转到 是 并继续执行下一个任务 你的问题引起了我的兴趣
  • java swing JTextField 设置 PlaceHolder [重复]

    这个问题在这里已经有答案了 我创建了一个 JTextField 现在我想在该 JTextField 上设置占位符 但我不知道如何 请帮忙 这是我的代码 JTextField database new JTextField Enter Dat
  • 使用 PyAudio 进行流式传输时修改音量

    我正在尝试流式传输 WAV 文件 同时剥离其中一个声道 因此它仅在一个扬声器上播放 同时降低音量 我使用 PyAudio 的原因是我必须能够 一次传输多个文件 从特定扬声器 左 右 播放声音 中断声音文件的播放 并且无法找到任何其他允许这些
  • Visual Studio 2015 社区中缺少通用应用程序模板

    我仍然无法在已安装的 Visual Studio 2015 Community 中创建新的通用应用程序 我认为原因是我运行的是 Windows 8 1 今天我升级到Windows 10 但没有可用的 通用应用程序 模板 我已经安装了 Win
  • 使用 Grails 在电子邮件中发送图像

    我正在使用 Grails邮件插件发送电子邮件 我想在电子邮件正文中发送图像 而不是作为附件 我想要的是图像显示在电子邮件正文本身中 就像在新闻通讯中一样 我试过 img style display block height 100px wi
  • git push --force,在幕后

    当你使用 force 进行 git push 时到底会发生什么 我已经在网上搜索了大约一个小时 我能找到的最相关的答案是 Same as git push but force the push even if it results in a
  • 如何将列表项从字符串转换为整数?

    我有一个字符串列表列表 如下所示l 1 2 3 4 5 6 2 3 2 3 4 我想从第 2 项开始将列表视为 int 以下代码实现了目的 但没有将列表项转换为 int gt gt gt l i 2 for i in range len l
  • 在管理中列出过滤器和搜索结果

    在我覆盖之后get search results方法 list filter不起作用 但搜索字段按我的预期工作 class NaruceniProduktiAdmin admin ModelAdmin search fields broj
  • 使用 Eloquent/Raw Laravel 查询的 Group Concat

    我有一个以 Eloquent 形式存储的对象结构 item id 2 item color Black item size L item Quantity 5 item id 2 item color Black item size M i
  • 为什么将列表转换为集合比将生成器转换为集合更快?

    这是一个例子 gt gt gt from timeit import timeit gt gt gt print timeit y for y in range 100 number 100000 0 7025867114395824 gt
  • 简单的素数程序 - 线程 C# 的奇怪问题

    这是我的代码 using System using System Collections Generic using System Linq using System Text using System Threading namespac
  • 删除工作表/图表事件 VBA

    我试图在删除工作表 Excel 时触发宏 自 2010 年以来 出现了不同的删除事件 应用程序级别 Application SheetBeforeDelete 事件 工作簿级别 Workbook SheetBeforeDelete 事件 工
  • 在Shiny R中,有没有办法在observeEvent之后立即运行observeEvent而没有延迟(renderUI的问题)?

    好吧 我的标题有点令人困惑 但让我解释一下 我正在使用 renderUI 来获取音频标签 但是 我想以较低的音量启动音频 因为它太大声了 下面的代码工作正常 除了因为我添加了延迟 它以较高的音量开始 然后迅速转到较低的音量 但它仍然非常明显
  • 世博会开发者菜单未显示

    我正在使用 expo 工具并进行原生反应 没有任何问题 但在我的模拟器上升级 Expo Go 应用程序后 出现了问题 开发者菜单不会像以前那样显示 并且菜单中的项目不会显示 我的expo go版本 2 25 1 我正在使用 Genymoti
  • 张量流成本函数是张量,而不是标量 - 为什么?优化失败

    以下代码可以运行 但不起作用 变量cost总是一个充满 1 0 的张量 但为什么呢 我估计了一个标量 因为 1x5 矩阵乘以 5x1 矩阵就是一个标量 优化时偏差和权重也不会改变 我究竟做错了什么 KI Model x tf placeho
  • luasocket的问题

    我试图从 lua 套接字读取一些 二进制 数据 但上面的代码不会终止重复循环 我如何知道流已到达末尾 client require socket client socket connect www google com 80 client