August'24: Kamaelia is in maintenance mode and will recieve periodic updates, about twice a year, primarily targeted around Python 3 and ecosystem compatibility. PRs are always welcome. Latest Release: 1.14.32 (2024/3/24)
Internet Modules
Kamaelia has a wide selection of components to allow you to implement TCP and UDP based systems, including Multicast capabilities and simple chassis or making servers. These are mostly found in Kamaelia.Internet.
These components implement the low level functionality for making and maintaining connections - they do not implement any particular network protocols. Other components do that and can be used with these to construct more capable servers and clients.
Making a TCP socket connection to a
server
The TCPClient
component simply makes a connection to a server. Its inboxes and
outboxes receive and send data from/to that server. This is very easy to
use.
TCPThreadedClient
is identical to use, but differs in implementation. It run its own
thread and so doesn't need the Selector
component)
Being a TCP socket server
SingleServer
is the simplest kind of server to use - it allows one client to connect
at a time, and its inbox and outbox communicate with that client.
ConnectedServer
is more powerful - it can handle lots of clients simultaneously. It is a
kind of factor component: every time a client connects it spawns a
component (known as the protocol handler) to deal with that
connection.
ConnectedServer is built ontop of TCPServer which
provides the underlying handling of the socket connections. By spawning
ConnectedSocketAdapter
components to manage the socket for each connection.
Sending and receiving UDP datagrams
The Kamaelia.Internet.UDP
module contains components for sending and receiving datarams.
Multicast
These components provide a simple way to send and receive (or both
send and receive) multicast datagrams.
Network simulation
The Kamaelia.Internet.Simulate
module contains components that simulate the kinds of problems you might
get on a network - out of order packet delivery, lost packets etc.
Supporting components
ConnectedSocketAdapter
(CSA) components are spawned by the TCP client and server components to
look after actual communication with the TCP socket.
Kamaelia.Chassis.Selector
is designed for dealing with checking to see if any network connections
are active, and notifying CSAs that they can send/receive data. This
allows individual CSAs to pause when idle - without having to block up
the system or waste processor cycles by constantly polling.
If you are just using the facilities provided for implementing clients
and server you don't need to worry about these components!
-- Matt Hammond, April 2007