#include
#include
#include
#include
#include
#include
#include
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
//gcc libsocket.c -fPIC -shared -o
libmylib51.so -lm -I/home/tomas/lua5.1/src
--[[
root@Tomas:/home/tomas/MyLua#
./lua5.1 test.lua
./lua5.1: test.lua:3: module 'mylib' not found:
no field package.preload['mylib']
no file './mylib.lua'
no file
'/usr/local/share/lua/5.1/mylib.lua'
no file
'/usr/local/share/lua/5.1/mylib/init.lua'
no file '/usr/local/lib/lua/5.1/mylib.lua'
no file
'/usr/local/lib/lua/5.1/mylib/init.lua'
no file './mylib.so'
no file '/usr/local/lib/lua/5.1/mylib.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file './libmylib51.so'
no file
'/usr/local/lib/lua/5.1/libmylib51.so'
stack traceback:
[C]: in function 'require'
test.lua:3: in main chunk
输出的lua动态库的文件名要是libmylib51.so
--socket = require("bit")
--a = require("socket")
b = require("mylib")
print(mylib.lsin(1))
print(b.lsin(1))
--]]
int luaopen_mylib(lua_State *L);
static int l_sin (lua_State *L)
{
double d = luaL_checknumber(L, 1);
lua_pushnumber(L, sin(d));
//printf("ok now is luahook!\n");
return 1;
}
static const luaL_Reg mylib[] =
{
{"lsin", l_sin},
{NULL, NULL}
};
int luaopen_mylib(lua_State *L)
{
luaI_openlib(L, "mylib", mylib, 0);
printf("hello,load!\n");
return 1;
}
unsigned int getLoalIpAddress(const char* ethname)
{
struct ifreq ifr ={0};
int fd = socket(AF_INET,SOCK_DGRAM,0);
if( fd < 0 )
{
return -1;
}
strcpy(ifr.ifr_name,ethname);
if( ioctl(fd,SIOCGIFADDR,&ifr) < 0 )
{
return
-1;
}
struct sockaddr_in localSockAddr;
memcpy(&localSockAddr, &ifr.ifr_addr,
sizeof(struct sockaddr_in));
unsigned int ip =
ntohl(localSockAddr.sin_addr.s_addr);
struct in_addr ipaddr;
ipaddr.s_addr = htonl(ip);
printf("%s->%s\n",ethname,inet_ntoa(ipaddr));
close(fd);
return
ip;
}
int main()
{
getLoalIpAddress("eth0"); }