diff --git a/dev/tests/network_udp.lua b/dev/tests/network_udp.lua new file mode 100644 index 000000000..6b08dae77 --- /dev/null +++ b/dev/tests/network_udp.lua @@ -0,0 +1,32 @@ +for i = 1, 3 do + print(string.format("iteration %s", i + 1)) + local complete = false + + local server = network.udp_open(8645, function (address, port, data, srv) + print(string.format("server received %s byte(s) from %s:%s", #data, address, port)) + srv:send(address, port, "pong") + end) + + network.udp_connect("localhost", 8645, function (data) + print(string.format("client received %s byte(s) from server", #data)) + complete = true + end, function (socket) + print("udp socket opened") + start_coroutine(function() + print("udp data-sender started") + for k = 1, 5 do + local payload = "" + for j = 1, 16 do + payload = payload .. math.random(0, 9) + end + socket:send(payload) + print(string.format("sent packet %s (%s bytes)", k, #payload)) + coroutine.yield() + end + socket:close() + end, "udp-data-sender") + end) + + app.sleep_until(function () return complete end, nil, 5) + server:close() +end diff --git a/res/scripts/classes.lua b/res/scripts/classes.lua index f5457ef58..41918ce3e 100644 --- a/res/scripts/classes.lua +++ b/res/scripts/classes.lua @@ -144,7 +144,11 @@ network.udp_connect = function (address, port, datagramHandler, openCallback) socket.id = network.__connect_udp(address, port) _udp_client_datagram_callbacks[socket.id] = datagramHandler - _udp_client_open_callbacks[socket.id] = openCallback + if openCallback then + _udp_client_open_callbacks[socket.id] = function() + openCallback(socket) + end + end return socket end