UDP delay increases with time

Hello,

I am using UDP to send 10 strings per second to another device. When I send to older devices, it gets about one second delay per 10 seconds running. When I close and restart the socket, the delay is gone. Any idea what this could be?

Best, Philipp

[lua]local socket = require(“socket”)

— none = 1, sender = 2, receiver = 3

noneSenderReceiver = 1
mailTable = {123, 345}
mailedTable = {-100,-100}

— send

local function stopSending()
    print (“ended send”)
    timer.cancel (sendTimer)
    sendSocket: close()
    if noneSenderReceiver == 2 then
        noneSenderReceiver = 1

    end
end

function sendMessage()
    if noneSenderReceiver ~= 2 then
        noneSenderReceiver = 2
        sendSocket = socket.udp()
        sendSocket: settimeout(0)
        sendSocket: setpeername(“226.192.1.1”, 12343)
        print (“begin send”)

        local function sendMessageLoop()
            if noneSenderReceiver == 2 then
                sendSocket: send(mailTable[1]*10000+mailTable[2])
            else
                stopSending()
            end
        end
        sendTimer = timer.performWithDelay(100, sendMessageLoop, 0)

    else
        stopSending()
    end

end

— receive

local function getIP()
    local s = socket.udp()
    s:setpeername(“74.125.115.104”, 80)
    local ip, sock = s: getsockname()
    print(“myIP:”, ip, sock)
    return ip
end

local function stopReceiving()
    timer.cancel (receiveTimer)
    receiveSocket: close()
    if noneSenderReceiver == 3 then
        noneSenderReceiver = 1
    end
end

function receiveMessage()
    if noneSenderReceiver ~= 3 then
        noneSenderReceiver = 3
        receiveSocket = socket.udp()
        receiveSocket: setsockname(“226.192.1.1”, 12343)

        local name = receiveSocket: getsockname()
        if name then --multicast available
            receiveSocket:setoption( “ip-add-membership”, {multiaddr=“226.192.1.1”, interface = getIP()})
        else
            print (“multicast not available”)
        end

        receiveSocket: settimeout(0)

        local function receiveMessageLoop()
            if noneSenderReceiver == 3 then
                local data = receiveSocket: receive()
                if data then
                    local x = (data-data%10000)/10000
                    local y = data%10000
                    if x%1 == 0 and y%1 == 0 then
                        mailedTable[1] = x
                        mailedTable[2] = y
                    end
                end
            else
                stopReceiving()
            end
        end
        receiveTimer = timer.performWithDelay(100, receiveMessageLoop, 0)

    else
        stopReceiving()
    end
end
[/lua]