LuaSocket没有从Ruby

时间:2018-04-15 14:22:19

标签: ruby sockets lua udp luasocket

我试图将使用Lua的Windows计算机游戏连接到用Ruby编写并在同一网络上的Macbook上托管的外部服务器。

这是在游戏开始时执行的Lua代码

socket = require("socket")
udp = socket.udp()
udp:setpeername('192.168.0.17', 9100) -- This is my laptop    
udp:settimeout(0.001)

这个Lua代码在每个模拟步骤中执行:

udp:send("Simulation step")

message = udp:receive()

print(message)

这是Ruby服务器:

i = 0

Socket.udp_server_loop(9100) {|msg, msg_src|
  puts i.to_s + ": " + msg + " | " + msg_src.inspect.to_s
  i += 1
  msg_src.reply i.to_s + ": reply from server"
}

到目前为止,游戏收到了来自服务器"的回复。正确地,打印它,我可以在我的笔记本电脑上的Ruby控制台中看到:

19: Simulation step | #<Socket::UDPSource: 192.168.0.80:55697 to 192.168.0.17:9100>

但是我想更加异步 - 我希望不断收到数据并且只是不时地发送回来的东西。我想通过UDP我不必担心连接 - 只需发送消息就可以了。

我在Ruby中试过这个:

require 'socket'

s = UDPSocket.new

while 1 do
  s.send "hi", 0, "192.168.0.80", 9100
end

Luasocket没有收到。将超时时间增加到1秒并没有帮助。将端口更改为Windows用于发送UDP数据包的端口(55697)并不起作用。

两台计算机上都禁用了防火墙。

当我要发送内容时发送msg_src.reply是不可行的,它通常会花一些时间进行计算,不会按时回复(超时前0.001秒)

如何使用UDP执行此操作?或者也许它不可能,我应该尝试使用TCP?

0 个答案:

没有答案