Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- This example is largely based on the ones from (at least 90% not mine)
- -- lua-enet ( http://leafo.net/lua-enet/ )
- -- and love-enet ( https://bitbucket.org/MartinFelis/love-enet )
- -- especially: love-enet-example ( https://bitbucket.org/MartinFelis/love-enet-example )
- require("love.enet")
- local mode = "server"
- local client = {}
- local server = {}
- local address = "localhost:6789"
- function love.load(args)
- if #args > 1 then mode = args[2] end
- print("Mode: '" .. mode .. "'")
- if mode == "server" then
- print ("Server: listening...")
- local errorMessage
- server.host, errorMessage = love.enet.newHost(address)
- if server.host == nil then
- print("Error!: " .. errorMessage)
- end
- client = nil
- elseif mode == "client" then
- print ("Client: connecting to server: " .. address)
- client.host, errorMessage = love.enet.newHost()
- if client.host == nil then
- print("Error!: " .. errorMessage)
- end
- client.host:connect(address)
- client.counter = 0
- client.peer = false
- client.connectTimestamp = 0
- client.duration = 10
- client.lastMessageTimestamp = 0
- server = nil
- else
- print("You're a horrible person.")
- end
- end
- function serverListPeers()
- if server.host:getPeerCount() <= 0 then
- return
- end
- print("list of peers:")
- local i = 1
- while i < server.host:getPeerCount() + 1 do
- local p = server.host:getPeer(i)
- print("\t" .. i .. ": " .. tostring(p) .. " state: " .. p:getState() .. " connectID: " .. tostring (p:getConnectId()))
- i = i + 1
- end
- end
- local serverPeer = {}
- function serverUpdate ()
- local event = server.host:service(0)
- while event ~= nil do
- if event.type == "receive" then
- print("Server: got message: ", event.data, event.peer)
- event.peer:send(event.data)
- local limit, minimum, maximum = event.peer:setTimeout(5, 800, 1200);
- elseif event.type == "connect" then
- print("Server: got a new connection (peer count = " .. server.host:getPeerCount() .. "). Peer index = " .. event.peer:getIndex())
- serverListPeers()
- serverPeer = event.peer
- elseif event.type == "disconnect" then
- print("Server: lost connection to peer: " .. tostring(event.peer) .. " (peer count = " .. server.host:getPeerCount() .. ")")
- else
- print("Event type unknown: '"..event.type.."'")
- end
- event = server.host:service(0)
- end
- end
- function clientUpdate (dt)
- local event = client.host:service(0)
- while event ~= nil do
- if event.type == "connect" then
- print("Client: connected to: " .. tostring(event.peer))
- client.peer = event.peer
- client.connectTimestamp = love.timer.getTime()
- event.peer:send("Hello server")
- client.lastMessageTimestamp = love.timer.getTime()
- print("Client: initializing ping interval = " .. event.peer:setPingInterval (500))
- print("Client: Initializing round trip time = " .. client.peer:getRoundTripTime (50))
- local limit, minimum, maximum = client.peer:setTimeout(16, 1000, 1500);
- elseif event.type == "disconnect" then
- print("Client: Disconnected from Server!")
- love.event.push("quit")
- elseif event.type == "receive" then
- print("Client: received message: ", event.data, event.peer)
- client.counter = client.counter + 1
- else
- print("Event type unknown: '"..event.type.."'")
- end
- event = client.host:service(0)
- end
- if client.connectTimestamp - love.timer.getTime() + client.duration < 0 then
- print ("Client: Exiting!")
- print ("Client: In/Out: " .. client.host:getTotalReceivedData() .. "/" .. client.host:getTotalSentData())
- client.peer:disconnect()
- client.host:service(100)
- client.peer = false
- love.event.push("quit")
- end
- -- actions that are done every second
- if client.peer and math.floor (love.timer.getTime() - client.lastMessageTimestamp) > 0 then
- client.lastMessageTimestamp = love.timer.getTime()
- client.peer:send("Packet " .. tostring (client.counter))
- print ("rtt = " .. tostring(client.peer:getRoundTripTime()))
- end
- end
- function love.update(dt)
- if server then
- serverUpdate(dt)
- end
- if client then
- clientUpdate(dt)
- end
- end
- function love.keypressed(key, code)
- print ("got key: " .. key)
- if (key == "escape") then
- love.event.push("quit")
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement