diff options
author | Mattes D <github@xoft.cz> | 2015-01-28 15:15:54 +0100 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2015-02-04 08:40:51 +0100 |
commit | 04347084d658baedd6dc615fa34b62d3c19f1d2e (patch) | |
tree | d9756a8f468fc31eed61ddbc3501c7981a0e8af5 | |
parent | cTCPLink: Fixed missing addresses on link connection. (diff) | |
download | cuberite-04347084d658baedd6dc615fa34b62d3c19f1d2e.tar cuberite-04347084d658baedd6dc615fa34b62d3c19f1d2e.tar.gz cuberite-04347084d658baedd6dc615fa34b62d3c19f1d2e.tar.bz2 cuberite-04347084d658baedd6dc615fa34b62d3c19f1d2e.tar.lz cuberite-04347084d658baedd6dc615fa34b62d3c19f1d2e.tar.xz cuberite-04347084d658baedd6dc615fa34b62d3c19f1d2e.tar.zst cuberite-04347084d658baedd6dc615fa34b62d3c19f1d2e.zip |
-rw-r--r-- | MCServer/Plugins/NetworkTest/Info.lua | 46 | ||||
-rw-r--r-- | MCServer/Plugins/NetworkTest/NetworkTest.lua | 63 |
2 files changed, 109 insertions, 0 deletions
diff --git a/MCServer/Plugins/NetworkTest/Info.lua b/MCServer/Plugins/NetworkTest/Info.lua new file mode 100644 index 000000000..6bb639860 --- /dev/null +++ b/MCServer/Plugins/NetworkTest/Info.lua @@ -0,0 +1,46 @@ + +-- Info.lua + +-- Implements the g_PluginInfo standard plugin description + +g_PluginInfo = +{ + Name = "NetworkTest", + Version = "1", + Date = "2015-01-28", + Description = [[Implements test code (and examples) for the cNetwork API]], + + Commands = + { + }, + + ConsoleCommands = + { + net = + { + Subcommands = + { + client = + { + HelpString = "Connects, as a client, to a specified webpage (google.com by default) and downloads its front page using HTTP", + Handler = HandleConsoleNetClient, + ParameterCombinations = + { + { + Params = "", + Help = "Connects, as a client, to google.com and downloads its front page using HTTP", + }, + { + Params = "host [port]", + Help = "Connects, as a client, to the specified host and downloads its front page using HTTP", + }, + }, -- ParameterCombinations + }, -- client + }, -- Subcommands + }, -- net + }, +} + + + + diff --git a/MCServer/Plugins/NetworkTest/NetworkTest.lua b/MCServer/Plugins/NetworkTest/NetworkTest.lua new file mode 100644 index 000000000..1a24d4865 --- /dev/null +++ b/MCServer/Plugins/NetworkTest/NetworkTest.lua @@ -0,0 +1,63 @@ + +-- NetworkTest.lua + +-- Implements a few tests for the cNetwork API + + + + + +function Initialize() + -- Use the InfoReg shared library to process the Info.lua file: + dofile(cPluginManager:GetPluginsPath() .. "/InfoReg.lua") + RegisterPluginInfoCommands() + RegisterPluginInfoConsoleCommands() + + return true +end + + + + + +function HandleConsoleNetClient(a_Split) + -- Get the address to connect to: + local Host = a_Split[3] or "google.com" + local Port = a_Split[4] or 80 + + -- Create the callbacks "personalised" for the address: + local Callbacks = + { + OnConnected = function (a_Link) + LOG("Connected to " .. Host .. ":" .. Port .. ".") + LOG("Connection stats: Remote address: " .. a_Link:GetRemoteIP() .. ":" .. a_Link:GetRemotePort() .. ", Local address: " .. a_Link:GetLocalIP() .. ":" .. a_Link:GetLocalPort()) + LOG("Sending HTTP request for front page.") + a_Link:Send("GET / HTTP/1.0\r\nHost: " .. Host .. "\r\n\r\n") + end, + + OnError = function (a_Link, a_ErrorCode, a_ErrorMsg) + LOG("Connection to " .. Host .. ":" .. Port .. " failed: " .. a_ErrorCode .. " (" .. a_ErrorMsg .. ")") + end, + + OnReceivedData = function (a_Link, a_Data) + LOG("Received data from " .. Host .. ":" .. Port .. ":\r\n" .. a_Data) + end, + + OnRemoteClosed = function (a_Link) + LOG("Connection to " .. Host .. ":" .. Port .. " was closed by the remote peer.") + end + } + + -- Queue a connect request: + local res = cNetwork:Connect(Host, Port, Callbacks) + if not(res) then + LOGWARNING("cNetwork:Connect call failed immediately") + return true + end + + return true, "Client connection request queued." +end + + + + |