SocketConnect()
Connects to a remote socket and returns back a SocketData class that lets you interact with the remote server
Usage
STRUCTURE = SocketConnect(
ip,
port,
throwonerror
)
Argument | Summary |
---|---|
ip | the remote server name, or IP address to make a connection to |
port | the port to make the the connection on |
throwonerror | flag to determine whether an exception is thrown on error, defaults to true [optional] |
Calling
Supports named-parameter calling allowing you to use the function like:
SocketConnect( ip=?, port=?, throwonerror=? );
Supports passing parameters as a structure using ArgumentCollection:
SocketConnect( ArgumentCollection={ ip : ?, port : ?, throwonerror : ? } );
Extra
The SocketConnect() function enables you to interact with remote socket based methods. The SocketData that is returned from the SocketConnect() is a rich object that lets you interact with the remote server. The following methods are available from the SocketData object:
.disconnect() | disconnects the remote server. Once disconnected you won't be able to further interact with the server |
.sendLine( string ) | sends the string, followed by a carriage-return/newline, to the remote server |
.sendString( string ) | sends the string to the remote server |
.sendString( string ) | sends the string to the remote server |
.sendBinaryData( binarydata ) | sends the binary data to the remote server |
.readLine( timeoutms ) | reads a line from the remote server, waiting for at least the timeoutms milliseconds. It will read up to the carriage-return/newline, but will not include them. |
.readBytes( maxbytes, timeoutms ) | reads the number of given bytes from the remote server, waiting for at least timeoutms milliseconds. This will be a binary data that is returned. |
In addition to the above methods, you can also get at meta-information about the connection. 'localip', 'remoteip' and 'connected' all convey the state of the connection.
Here are some examples of using the function.
<cfscript> // Example connecting to a remote WEB server and doing a remote HEAD var socket = SocketConnect("www.bing.com", 80); socket.sendLine( "HEAD / HTTP/1.1" ); socket.sendLine( "host: www.bing.com" ); socket.sendLine( "" ); var line = socket.readLine( 30000 ); while ( line != null ){ line = socket.readLine( 30000 ); } socket.disconnect(); </cfscript>
This example shows how you can download binary data.
<cfscript> // Example connecting to a remote WEB server and downloading the logo var socket = SocketConnect("openbd.org", 80); // Write out the HTTP header socket.sendLine( "GET /manual/sd_openBD_32.png HTTP/1.1" ); socket.sendLine( "host: openbd.org" ); socket.sendLine( "" ); // Read the header var line = socket.readLine( 30000 ); while ( line != "" ){ line = socket.readLine( 30000 ); } // Read the bytes FileDelete(ExpandPath("./logo.png")); var bufferSize = 4096; var bindata = socket.readBytes( bufferSize, 500 ); while ( Len(bindata) > 0 ){ FileWrite( ExpandPath("./logo.png"), bindata ); if ( Len(bindata) < bufferSize ) break; bindata = socket.readBytes( bufferSize, 500 ); } socket.disconnect(); </cfscript>