C#-Lua UDP 不兼容(未收到消息)
C#-Lua UDP incompatibility (no message received)
我的问题:
C# 应用程序 (.NET 4.6.1) 发送的 UDP 消息未显示在 Lua 客户端(LOVE 0.9.2 与捆绑的 LuaSocket)。
发送代码非常简单:
UdpClient listener = new UdpClient(port);
listener.Send(bytes, bytes.Length, "client_ip", 1234);
接收码也比较简单:
local socket = require("socket")
local address,port = "server_ip",1234
local udp = socket.udp()
udp:settimeout(0)
udp:setpeername(address,port)
local data,msg_ip,port_nil
function love.update(dt)
repeat
data,msg_ip,port_nil = udp:receive()
if data then
print(data)
elseif msg_ip~="timeout" then
print(msg_ip)
end
until not data
end
正如 Michael 所说,问题实际上并不是 UDP 实现中的不兼容问题。我忘记在我的客户端 Lua 代码中包含 udp:setsockname('*',port)
,这是一个完全不同且更简单的问题。除非有人抱怨,否则我会留下这个错误的问题,希望能帮助其他被误导的灵魂。
我的问题:
C# 应用程序 (.NET 4.6.1) 发送的 UDP 消息未显示在 Lua 客户端(LOVE 0.9.2 与捆绑的 LuaSocket)。
发送代码非常简单:
UdpClient listener = new UdpClient(port);
listener.Send(bytes, bytes.Length, "client_ip", 1234);
接收码也比较简单:
local socket = require("socket")
local address,port = "server_ip",1234
local udp = socket.udp()
udp:settimeout(0)
udp:setpeername(address,port)
local data,msg_ip,port_nil
function love.update(dt)
repeat
data,msg_ip,port_nil = udp:receive()
if data then
print(data)
elseif msg_ip~="timeout" then
print(msg_ip)
end
until not data
end
正如 Michael 所说,问题实际上并不是 UDP 实现中的不兼容问题。我忘记在我的客户端 Lua 代码中包含 udp:setsockname('*',port)
,这是一个完全不同且更简单的问题。除非有人抱怨,否则我会留下这个错误的问题,希望能帮助其他被误导的灵魂。