Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if ( !OOSock ) then require( "oosocks" ) end
- if ( !OOSock ) then error"no oosocks module found" end
- -- Useful (I hope) snippet for debugging
- -- Bit lua magic and one could generalize this for any enum debugging
- local SCKCALL=
- [[SCKCALL_CONNECT
- SCKCALL_LISTEN
- SCKCALL_BIND
- SCKCALL_ACCEPT
- SCKCALL_REC_LINE
- SCKCALL_REC_SIZE
- SCKCALL_REC_DATAGRAM
- SCKCALL_SEND]]
- SCKCALL=string.Explode("\n",SCKCALL)
- local Numbers={}
- for k,v in pairs(SCKCALL) do
- v=string.Trim(v)
- Numbers[v]=_G[v]
- if Numbers[v]==nil then ErrorNoHalt("Could not find "..tostring(v).."!\n") end
- end
- print("Loaded ",table.Count(Numbers)," SCKCALL_ enums")
- function OOSocks_GetSCKCALL(num)
- for name,enum in pairs(Numbers) do
- if enum==num then
- return name
- end
- end
- end
- local SCKERR=
- [[SCKERR_OK
- SCKERR_BAD
- SCKERR_CONNECTION_RESET
- SCKERR_NOT_CONNECTED
- SCKERR_TIMED_OUT]]
- SCKERR=string.Explode("\n",SCKERR)
- local Numbers={}
- for k,v in pairs(SCKERR) do
- v=string.Trim(v)
- Numbers[v]=_G[v]
- if Numbers[v]==nil then ErrorNoHalt("Could not find "..tostring(v).."!\n") end
- end
- print("Loaded ",table.Count(Numbers)," SCKERR_ enums")
- function OOSocks_GetSCKERR(num)
- for name,enum in pairs(Numbers) do
- if enum==num then
- return name
- end
- end
- end
- clients = {};
- local function ClientSockCallback(socket, callType, callId, err, data, peer, peerPort)
- if(err != SCKERR_OK) then
- Error("sckerr",err);
- socket:Close()
- end
- if(callType == SCKCALL_REC_LINE) then
- print(peer,peerPort,data);
- if data=="" then data="!NO DATA!" end
- if(data != "END") then
- socket:ReceiveLine(); -- If the client hasnt told us they are done, read annother line!
- end
- end
- end
- -- This is our listen socket. It will just accept every socket into clients.
- ServerSock = OOSock(IPPROTO_TCP);
- ServerSock:SetCallback(function(socket, callType, callId, err, data, peer, peerPort)
- if(err != SCKERR_OK) then
- print("ERRROR",OOSocks_GetSCKCALL(callType), OOSocks_GetSCKERR(err) )
- end
- if(callType == SCKCALL_BIND) then
- socket:Listen(1231);
- print"listening"
- end
- if(callType == SCKCALL_LISTEN) then
- socket:Accept();
- end
- if(callType == SCKCALL_ACCEPT) then
- print("Got client " .. peer .. "\n");
- data:SetCallback(ClientSockCallback);
- data:ReceiveLine() -- Lets for some reason, read 1 line.
- table.insert(clients, data); -- I dunno, we might need em.
- -- Accept annother socket.
- socket:Accept();
- end
- end)
- ServerSock:Bind("", 1231);
Add Comment
Please, Sign In to add comment