02-28-2011, 01:28 AM
Im currently devloping a plugin to connect to a socket server i just wanted to know if there is a socket module or would i have to use luasockets dll?
|
sockets?
|
|
02-28-2011, 01:28 AM
Im currently devloping a plugin to connect to a socket server i just wanted to know if there is a socket module or would i have to use luasockets dll?
02-28-2011, 01:56 AM
The engine of MCServer is not LUA, so you have to use Java, I think. o.O
02-28-2011, 02:07 AM
(02-28-2011, 01:56 AM)Jockie Wrote: The engine of MCServer is not LUA, so you have to use Java, I think. o.O I think he wants the plugin to gather some data from the server. You would need a lua module included by MCServer for this to work, or I think loading the luasockets module from within lua. greets, Tybor
02-28-2011, 03:18 AM
I already created something for this, and exported it to Lua
Code: class cTCPLink
{
public:
cTCPLink();
~cTCPLink();
bool Connect( _cstring a_Address, unsigned int a_Port );
int Send( _cstring a_Data, unsigned int a_Size, int a_Flags = 0 );
int SendMessage( const _cstring a_Message, int a_Flags = 0 );
void CloseSocket();
protected:
virtual void ReceivedData( char a_Data[256], int a_Size ) = 0;
};It's not documented anywhere. You basically need to 'extend' it like you extend cPlugin. You need this piece of code for that: Code: local TCPLink = {}
TCPLink.__index = TCPLink
function TCPLink:new()
local t = {}
setmetatable(t, TCPLink)
local w = Lua__cTCPLink:new()
tolua.setpeer(w, t)
w:tolua__set_instance(w)
return w
endThen you can inherit the ReceivedData function like so: Code: TCPLink:ReceivedData( Data, Size )
-- Do stuffs with data
end
02-28-2011, 03:21 AM
Okay im a tad confused as i only ever use pure lua and gmod lua, So what exactly do i need to do with this code?
02-28-2011, 03:59 AM
Here's an example:
Code: local TCPLink = {}
TCPLink.__index = TCPLink
function TCPLink:new()
local t = {}
setmetatable(t, TCPLink)
local w = Lua__cTCPLink:new_local() -- new_local = Deleted by garbage collector
tolua.setpeer(w, t)
w:tolua__set_instance(w)
return w
end
TCP = TCPLink:new()
if( TCP:Connect("www.mc-server.org", 80) == true ) then
Log("Sending message")
TCP:SendMessage("GET http://www.mc-server.org/\n")
end
function TCPLink:ReceivedData( Data, Size )
Log("Received data: " .. Size )
String = string.sub( Data, 0, Size )
Log( String )
end
02-28-2011, 04:03 AM
Thanks dude, i can now start working on my plugin.
02-28-2011, 05:52 AM
On trying your example it crashes after data is recevied, Any ideas?
|
|
« Next Oldest | Next Newest »
|