The C++ framework for developing highly scalable, high performance servers on Windows platforms.

Sockets
[Socket Tools Library]

Collaboration diagram for Sockets:

Detailed Description

Given that we support two basic kinds of socket, stream and datagram you would be forgiven for expecting us to have two types of socket. In fact there are four. The reason for the existence of the third is that we differentiate between pure datagram servers (i.e. a server where the sockets can only communicate back with the address that sent the datagram in the first place) and more general purpose datagram connection managers with sockets that can be used to Read() and RecvFrom() any address. The reason for the fourth is that sometimes it is useful to have a TCP stream where the socket helps to maintain the order of the data buffers flowing through the framework and sometimes this additional book-keeping is just pointless overhead.

Although there are only four concrete socket types; CStreamSocket, CSequencedStreamSocket, CDatagramSocket and CDatagramServerSocket, there are a multitude of interfaces that allow the framework and users of the framework to access the sockets in the most restricted way appropriate... Thus, code used inside the framework to filter data streams can access more functionality of a socket than code that simpy implements a callback interface. The main interfaces that you need to know about are IStreamSocket, IDatagramSocket and IDatagramServerSocket, everything else, as they say, is just implementation details.


Classes

class  CDatagramServerSocket
 A datagram socket that allows you to SendTo() any host but restricts who you can RecvFrom(), basically you can only recv data from the port that the associated server is listening on. More...
class  CDatagramSocket
 A datagram socket that allows you to RecvFrom() and SendTo() any host. More...
class  IAsyncSocket
 An interface to the functionality common to all asynchronous sockets. The "Try" functions add to the functions from JetByteTools::IO::IAsyncIOStream by adding versions that return false on failure rather than by throwing an exception. More...
class  IDatagramSendSocket
class  IDatagramServerSocket
 This interface provides an equivalent interface to the one provided by IAsyncSocket for IDatagramSocket and IStreamSocket. It does not feature the ability to issue Read() calls as the sockets derived from this interface are purely disconnected, datagram, server sockets; i.e. they're how you send a datagram back to whoever sent you the datagram that has just arrived. IDatagramSocket supports a pseudo connected interface where you can issue Read() calls ... More...
class  IDatagramServerSocketCallback
 The socket server callback interface is composed from more specific interfaces using inheritance. This is purely to allow the framework to work in terms of the narrowest interface internally and does not affect the user of the code. This is, effectively, the first interface that the user would wish to implement. More...
class  IDatagramServerSocketEx
 A socket interface that adds functionality that is used internally by the socket server classe. More...
class  IDatagramSocket
 This interface adds datagram socket specific functionality to the IAsyncSocket interface. Note that instances of IDatagramSocket support a pseudo connected interface where you can issues Read() calls and RecvFrom() any address. IDatagramServerSocket presents a much more restricted interface intended for use from "pure" datagram servers. More...
class  IDatagramSocketCallback
 The connection manager and socket server callback interfaces are composed from more specific interfaces using inheritance. This is purely to allow the framework to work in terms of the narrowest interface internally and does not affect the user of the code. Effectively the first interface that the user would wish to implement is at the IXXXConnectionManagerCallback level and above. More...
class  IDatagramSocketEx
 A socket interface that adds functionality that is used internally by the connection manager and socket server classes. More...
class  IFilterableDatagramSocket
 An interface which adds functionality that is useful when filtering a connection. More...
class  IFilterableStreamSocket
 An interface which adds functionality that is useful when filtering a connection. More...
class  IPoolableDatagramServerSocket
 An interface that exists purely to tie together the poolable nature of a socket and the datagram server socket nature of a socket into a poolable datagram server socket. The CDatagramServerSocketAllocator object works in terms of this interface. More...
class  IPoolableDatagramSocket
 An interface that exists purely to tie together the poolable nature of a socket and the datagram socket nature of a socket into a poolable datagram socket. The CDatagramSocketAllocator object works in terms of this interface. More...
class  IPoolableSocket
 The IPoolableSocket interface provides the 'poolability' of the sockets. Poolable sockets are pooled using a CNodeList and so, for a socket to be pooled it must derive from CNodeList::Node. When a socket is used from the pool or released to the pool the allocator passes the socket's user data to the allocation monitor and so poolable sockets must support IIndexedOpaqueUserData. More...
class  IPoolableStreamSocket
 An interface that exists purely to tie together the poolable nature of a socket and the stream socket nature of a socket into a poolable stream socket. The CStreamSocketAllocator and CSequencedStreamSocketAllocator objects work in terms of this interface. More...
class  ISocketCallback
 The connection manager and socket server callback interfaces are composed from more specific interfaces using inheritance. This is purely to allow the framework to work in terms of the narrowest interface internally and does not affect the user of the code. Effectively the first interface that the user would wish to implement is at the IXXXConnectionManagerCallback level and above. More...
class  IStreamSocket
 This interface adds stream socket specific functionality to the IAsyncSocket interface. As you can see that isn't much. This is the interface that you will interact with to access socket functionality when you write a client or server as this is the interface to the socket connection that you are passed when callback events occur on a connection. More...
class  IStreamSocketCallback
 The connection manager and socket server callback interfaces are composed from more specific interfaces using inheritance. This is purely to allow the framework to work in terms of the narrowest interface internally and does not affect the user of the code. Effectively the first interface that the user would wish to implement is at the IXXXConnectionManagerCallback level and above. More...
class  IStreamSocketEx
 A socket interface that adds functionality that is used internally by the connection manager and socket server classes. More...
class  ISupportMulticast
 The interface used to support multicasting. More...
class  CSequencedStreamSocket
 A stream socket that supports read and write sequencing. More...
class  CStreamSocket
 A stream socket. Note that this socket does NOT support read and write sequencing. More...
class  TAsyncSocket
 A template class that provides most of the functionality that is shared between all socket types. More...


Generated on Sun Sep 12 19:06:55 2021 for The Server Framework - v7.4 by doxygen 1.5.3