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 )