hi, don’t have so much time… bellow some code excerpt from my app (i can’t tell you in details more about, just have a look and try around)
what i remember and that was important is the order where you set the timeout
tcpServer:settimeout( 0 )
client = tcpServer:accept()
------ see bellow
– DecodeCommunication
local function decodeCommunication( str )
local t = {}
local function helper( line ) table.insert( t , line ) return “” end
helper( ( str:gsub( “(.-)*” , helper ) ) )
return t
end
local function createTCPServer( ip, port )
– Create Socket
local tcpServerSocket , err = socket.tcp()
local backlog = 0
– Check Socket
if tcpServerSocket == nil then
return nil , err
end
– Allow Address Reuse
tcpServerSocket:setoption( “reuseaddr” , true )
– Bind Socket
local res, err = tcpServerSocket:bind( ip , port )
if res == nil then
return nil , err
end
– Check Connection
res , err = tcpServerSocket:listen( backlog )
if res == nil then
return nil , err
end
– Return Server
return tcpServerSocket
end
—>>> Game Loop (Clouds and PadServer)
local gameLoop = function()
if (firststart == 1) then
print (“setup server”)
– getyp my local IP
client = socket.connect( “www.google.com”, 80 )
ip, port = client:getsockname()
print ("Connect me at: " … ip)
client:close()
–start server
tcpServer = createTCPServer (ip,8080)
print (tcpServer)
ip, port = tcpServer:getsockname()
firststart =0
end
tcpServer:settimeout( 0 )
client = tcpServer:accept()
if (client ~= nil) then
ip, port = client:getpeername()
–print("Got connection from "… ip … " on port " … port)
local line, err = client:receive()
if not err then
[import]uid: 4795 topic_id: 15964 reply_id: 77563[/import]