Public Member Functions

StreamingSocket Class Reference

A wrapper for a streaming (TCP) socket. More...

List of all members.

Public Member Functions

 StreamingSocket ()
 Creates an uninitialised socket.
 ~StreamingSocket ()
 Destructor.
bool bindToPort (int localPortNumber)
 Binds the socket to the specified local port.
bool connect (const String &remoteHostname, int remotePortNumber, int timeOutMillisecs=3000)
 Tries to connect the socket to hostname:port.
bool isConnected () const noexcept
 True if the socket is currently connected.
void close ()
 Closes the connection.
const StringgetHostName () const noexcept
 Returns the name of the currently connected host.
int getPort () const noexcept
 Returns the port number that's currently open.
bool isLocal () const noexcept
 True if the socket is connected to this machine rather than over the network.
int waitUntilReady (bool readyForReading, int timeoutMsecs) const
 Waits until the socket is ready for reading or writing.
int read (void *destBuffer, int maxBytesToRead, bool blockUntilSpecifiedAmountHasArrived)
 Reads bytes from the socket.
int write (const void *sourceBuffer, int numBytesToWrite)
 Writes bytes to the socket from a buffer.
bool createListener (int portNumber, const String &localHostName=String::empty)
 Puts this socket into "listener" mode.
StreamingSocketwaitForNextConnection () const
 When in "listener" mode, this waits for a connection and spawns it as a new socket.

Detailed Description

A wrapper for a streaming (TCP) socket.

This allows low-level use of sockets; for an easier-to-use messaging layer on top of sockets, you could also try the InterprocessConnection class.

See also:
DatagramSocket, InterprocessConnection, InterprocessConnectionServer

Constructor & Destructor Documentation

StreamingSocket::StreamingSocket (  )

Creates an uninitialised socket.

To connect it, use the connect() method, after which you can read() or write() to it.

To wait for other sockets to connect to this one, the createListener() method enters "listener" mode, and can be used to spawn new sockets for each connection that comes along.

StreamingSocket::~StreamingSocket (  )

Destructor.


Member Function Documentation

bool StreamingSocket::bindToPort ( int  localPortNumber )

Binds the socket to the specified local port.

Returns:
true on success; false may indicate that another socket is already bound on the same port
bool StreamingSocket::connect ( const String remoteHostname,
int  remotePortNumber,
int  timeOutMillisecs = 3000 
)

Tries to connect the socket to hostname:port.

If timeOutMillisecs is 0, then this method will block until the operating system rejects the connection (which could take a long time).

Returns:
true if it succeeds.
See also:
isConnected
bool StreamingSocket::isConnected (  ) const

True if the socket is currently connected.

void StreamingSocket::close (  )

Closes the connection.

const String& StreamingSocket::getHostName (  ) const

Returns the name of the currently connected host.

int StreamingSocket::getPort (  ) const

Returns the port number that's currently open.

bool StreamingSocket::isLocal (  ) const

True if the socket is connected to this machine rather than over the network.

int StreamingSocket::waitUntilReady ( bool  readyForReading,
int  timeoutMsecs 
) const

Waits until the socket is ready for reading or writing.

If readyForReading is true, it will wait until the socket is ready for reading; if false, it will wait until it's ready for writing.

If the timeout is < 0, it will wait forever, or else will give up after the specified time.

If the socket is ready on return, this returns 1. If it times-out before the socket becomes ready, it returns 0. If an error occurs, it returns -1.

int StreamingSocket::read ( void *  destBuffer,
int  maxBytesToRead,
bool  blockUntilSpecifiedAmountHasArrived 
)

Reads bytes from the socket.

If blockUntilSpecifiedAmountHasArrived is true, the method will block until maxBytesToRead bytes have been read, (or until an error occurs). If this flag is false, the method will return as much data as is currently available without blocking.

Returns:
the number of bytes read, or -1 if there was an error.
See also:
waitUntilReady
int StreamingSocket::write ( const void *  sourceBuffer,
int  numBytesToWrite 
)

Writes bytes to the socket from a buffer.

Note that this method will block unless you have checked the socket is ready for writing before calling it (see the waitUntilReady() method).

Returns:
the number of bytes written, or -1 if there was an error.
bool StreamingSocket::createListener ( int  portNumber,
const String localHostName = String::empty 
)

Puts this socket into "listener" mode.

When in this mode, your thread can call waitForNextConnection() repeatedly, which will spawn new sockets for each new connection, so that these can be handled in parallel by other threads.

Parameters:
portNumberthe port number to listen on
localHostNamethe interface address to listen on - pass an empty string to listen on all addresses
Returns:
true if it manages to open the socket successfully.
See also:
waitForNextConnection
StreamingSocket* StreamingSocket::waitForNextConnection (  ) const

When in "listener" mode, this waits for a connection and spawns it as a new socket.

The object that gets returned will be owned by the caller.

This method can only be called after using createListener().

See also:
createListener

The documentation for this class was generated from the following file:
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines