gpt4 book ai didi

sockets - luasocket 从端口 1900 发送 UDP 数据

转载 作者:行者123 更新时间:2023-12-01 13:52:58 26 4
gpt4 key购买 nike

我正在尝试从我的家庭自动化 Controller 模拟 Belkin wemo 开关,以从 amazon Echo 发送语音命令。该 Controller 支持 lua 语言。

我正在跟进这个file将UDP数据从Controller的1900端口发送到Echo的50000端口。现在每次我发送数据时,Socket 都会使用随机端口发送数据,而不是从端口 1900 发送数据。如果数据来自端口 1900,Echo 只会建立有效连接并回复。过去两天我一直在摸索着做是工作但还没有弄明白。

下面是我的代码。

strData1 =
'HTTP/1.1 200 OK' ..
'HOST: 239.255.255.250:1900'..
'CACHE-CONTROL: max-age=100'..
'EXT:'..
'LOCATION: http://192.168.1.152:49153/description.xml'..
'SERVER: Linux/3.14.0 UPnP/1.0 IpBridge/1.19.0'..
'hue-bridgeid: B8AC6FFFFEC53475'..
'ST: upnp:rootdevice'..
'USN: uuid:2f402f80-da50-11e1-9b23-b8ac6fc53475::upnp:rootdevice'

local socket = require "socket"
local udp = socket.udp()

udp:settimeout(0)
udp:setsockname('*', 1900)
udp:setpeername('192.168.1.102', 50000) -- Echo IP and Port number
udp:sendto(strData1,'192.168.1.102',50000)

最佳答案

您快到了:documentation声明在使用 setpeername 时,必须使用 send 而不是 sendto

此外,我猜这是一个拼写错误,但您正在尝试发送 Data 而不是 strData1。这是更正后的版本:

strData1 =
'HTTP/1.1 200 OK' ..
'HOST: 239.255.255.250:1900'..
'CACHE-CONTROL: max-age=100'..
'EXT:'..
'LOCATION: http://192.168.1.152:49153/description.xml'..
'SERVER: Linux/3.14.0 UPnP/1.0 IpBridge/1.19.0'..
'hue-bridgeid: B8AC6FFFFEC53475'..
'ST: upnp:rootdevice'..
'USN: uuid:2f402f80-da50-11e1-9b23-b8ac6fc53475::upnp:rootdevice'

local socket = require "socket"
local udp = socket.udp()

udp:settimeout(0)
udp:setoption('reuseaddr',true)
udp:setsockname('*', 1900)
udp:setpeername('192.168.1.102', 50000) -- Echo IP and Port number
udp:send(strData1)

tcpdump的抓包显示源端口是正确的:

22:40:45.653222 IP my.super.secret.ip.1900 > 192.168.1.102.50000: UDP, 长度 280

关于sockets - luasocket 从端口 1900 发送 UDP 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48305020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com