LuaSocketEvent
the Lua Socket Event, Asynchronous Socket. support platform for Linux, MacOSX, Windows, IOS, Android, Cocos2d-x.
LuaSocketEvent
supports data and message in two formats, data are the original data, the message is 4 bytes unsigned int little endian and message content
Please implement lua_lock and lua_unlock for thread safe.
nc -l 8888
local socketevent = require("socketevent")
sock = socketevent.tcp()
sock:on("connect", function(event)
print("connect")
end)
sock:on("data", function(event)
print("data: " .. event.data)
end)
sock:on("close", function(event)
print("close!")
end)
sock:on("error", function(event)
print("error: " .. event.error .. ", " .. event.message)
end)
sock:connect("127.0.0.1", 8888)
sock:send("hello server\n")
lua -i test_data.lua
> sock:send("hello server\n")
printf "\x0c\x00\x00\x00hello client\x0c\x00\x00\x00hello client" | nc -l 8888 | xxd
......
sock:on("message", function(event)
print("data: " .. event.data)
end)
......
sock:sendmessage("hello server")
gcc -o socketevent socketevent.c -I/usr/local/include -L/usr/local/lib -llua -lm -ldl -lpthread
gcc -fPIC --shared -o socketevent.so socketevent.c -lpthread
gcc -o socketevent.o -c socketevent.c
gcc -bundle -undefined dynamic_lookup -o socketevent.so socketevent.o
-
create
lua-5.1.4\build.bat
filecd src cl /O2 /W3 /c /DLUA_BUILD_AS_DLL l*.c del lua.obj luac.obj link /DLL /out:lua53.dll l*.obj cl /O2 /W3 /c /DLUA_BUILD_AS_DLL lua.c luac.c link /out:lua.exe lua.obj lua53.lib del lua.obj link /out:luac.exe l*.obj cd ..
-
open VS2013 developers tools, run
build.bat
-
copy
socketevent.c
tolua-5.1.4\src
-
create socketevent.dll
cl /O2 /W3 /c /DLUA_BUILD_AS_DLL socketevent.c link /DLL /out:socketevent.dll socketevent.obj lua53.lib
-
build source to
socketevent.dll
-
copy
socketevent.dll
toC:\Program Files (x86)\Cocos\cocos-simulator-bin\win32
-
main.lua join
require("socketevent")
-
using socketevent
-
Xcode open
frameworks/runtime-src/proj.ios_mac/LuaTest.xcodeproj
-
Classes dir create
socketevent.h
socketevent.c
file -
lua_module_register.h join
extern "C" { #include "socketevent.h" }
-
lua_module_register function join
luaopen_socketevent(L);
-
Xcode build for Mac