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)

Kamaelia.Internet.TCPClient

Simple TCP Client

This component is for making a TCP connection to a server. Send to its "inbox" inbox to send data to the server. Pick up data received from the server on its "outbox" outbox.

Example Usage

Sending the contents of a file to a server at address 1.2.3.4 on port 1000:

Pipeline( RateControlledFileReader("myfile", rate=100000),
          TCPClient("1.2.3.4", 1000),
        ).activate()

Example Usage - SSL

It is also possible to cause the TCPClient to switch into SSL mode. To do this you send it a message on its "makessl" inbox. It is necessary for a number of protocols to be able to switch between non-ssl and ssl, hence this approach rather than simply saying "ssl client" or "non-ssl client":

Graphline(
       MAKESSL = OneShot(" make ssl "),
       CONSOLE = ConsoleReader(),
       ECHO = ConsoleEchoer(),
       CONNECTION = TCPClient("kamaelia.svn.sourceforge.net", 443),
       linkages = {
           ("MAKESSL", "outbox"): ("CONNECTION", "makessl"),
           ("CONSOLE", "outbox"): ("CONNECTION", "inbox"),
           ("CONNECTION", "outbox"): ("ECHO", "inbox"),
       }
)

How does it work?

TCPClient opens a socket connection to the specified server on the specified port. Data received over the connection appears at the component's "outbox" outbox as strings. Data can be sent as strings by sending it to the "inbox" inbox.

An optional delay (between component activation and attempting to connect) can be specified. The default is no delay.

It creates a ConnectedSocketAdapter (CSA) to handle the socket connection and registers it with a selectorComponent so it is notified of incoming data. The selectorComponent is obtained by calling selectorComponent.getSelectorService(...) to look it up with the local Coordinating Assistant Tracker (CAT).

TCPClient wires itself to the "CreatorFeedback" outbox of the CSA. It also wires its "inbox" inbox to pass data straight through to the CSA's "inbox" inbox, and its "outbox" outbox to pass through data from the CSA's "outbox" outbox.

Socket errors (after the connection has been successfully established) may be sent to the "signal" outbox.

This component will terminate if the CSA sends a socketShutdown message to its "CreatorFeedback" outbox.

This component will terminate if a shutdownMicroprocess or producerFinished message is sent to its "control" inbox. This message is forwarded onto the CSA. TCPClient will then wait for the CSA to terminate. It then sends its own shutdownMicroprocess message out of the "signal" outbox.


Kamaelia.Internet.TCPClient.TCPClient

class TCPClient(Axon.Component.component)

TCPClient(host,port[,delay]) -> component with a TCP connection to a server.

Establishes a TCP connection to the specified server.

Keyword arguments:

  • host -- address of the server to connect to (string)
  • port -- port number to connect on
  • delay -- delay (seconds) after activation before connecting (default=0)

Inboxes

  • control : Shutdown signalling
  • makessl : Notifications to the ConnectedSocketAdapter that we want to negotiate SSL
  • inbox : data to send to the socket
  • _socketFeedback : notifications from the ConnectedSocketAdapter

Outboxes

  • outbox : data received from the socket
  • signal : socket errors
  • sslready : SSL negotiated successfully
  • _selectorSignal : For registering and deregistering ConnectedSocketAdapter components with a selector service

Methods defined here

Warning!

You should be using the inbox/outbox interface, not these methods (except construction). This documentation is designed as a roadmap as to their functionalilty for maintainers and new component developers.

__init__(self, host, port[, delay][, connect_timeout])

x.__init__(...) initializes x; see x.__class__.__doc__ for signature

main(self)

Main loop.

runClient(self[, sock])

safeConnect(self, sock, *sockArgsList)

Connect to socket and handle possible errors that may occur.

Returns True if successful, or False on failure. Unhandled errors are raised as exceptions.

setupCSA(self, sock)

setupCSA(sock) -> new ConnectedSocketAdapter component

Creates a ConnectedSocketAdapter component for the socket, and wires up to it. Also sends the CSA to the "selector" service.

shutdown(self)

stop(self)

Stop method provided to allow the scheduler to kill TCPClient connections cleanly if necessary. (Only rarely, if ever, needed - you are not expected to call this yourself)

waitCSAClose(self)

Returns True if a socketShutdown message is received on "_socketFeedback" inbox.

Feedback

Got a problem with the documentation? Something unclear that could be clearer? Want to help improve it? Constructive criticism is very welcome - especially if you can suggest a better rewording!

Please leave you feedback here in reply to the documentation thread in the Kamaelia blog.

-- Automatic documentation generator, 05 Jun 2009 at 03:01:38 UTC/GMT