Type Library Revision 2017.3060 Keywords socket, LuaSocket, networking See also LuaSocket Documentation network.request() network.download() network.canDetectNetworkStatusChanges network.setStatusListener()
The socket library provides low-level access to the network stack on the host device. It is not intended for general networking usage (the network library is much easier to use). There are a small number of specific tasks that require socket APIs, but these are uncommon and require a level of expertise in network programming that is also uncommon. Any code that uses the socket APIs will need ongoing tweaking as device vendors change rules for network access, for example in regard to IPv6 networks, while code written using the network APIs will generally continue to work because it is directly supported by device vendors.
Corona currently includes version 3.0-rc1
For asynchronous HTTP functions instead of synchronous LuaSocket functions, see network.request() and network.download().
On Android, you must add the INTERNET permission to the build.settings file.
settings =
{
android =
{
usesPermissions =
{
"android.permission.INTERNET",
},
},
}
local socket = require( "socket" ) -- Connect to the client local client = socket.connect( "www.apple.com", 80 ) -- Get IP and port from client local ip, port = client:getsockname() -- Print the IP address and port to the terminal print( "IP Address:", ip ) print( "Port:", port )
-- Load the relevant LuaSocket modules
local http = require( "socket.http" )
local ltn12 = require( "ltn12" )
-- Create local file for saving data
local path = system.pathForFile( "hello.png", system.DocumentsDirectory )
myFile = io.open( path, "w+b" )
-- Request remote file and save data to local file
http.request{
url = "http://www.coronalabs.com/demo/hello.png",
sink = ltn12.sink.file( myFile )
}
-- Display local file
local testImage = display.newImage( "hello.png", system.DocumentsDirectory )