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)
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.
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()
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"),
}
)
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.
TCPClient(host,port[,delay]) -> component with a TCP connection to a server.
Establishes a TCP connection to the specified server.
Keyword arguments:
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.
x.__init__(...) initializes x; see x.__class__.__doc__ for signature
Main loop.
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(sock) -> new ConnectedSocketAdapter component
Creates a ConnectedSocketAdapter component for the socket, and wires up to it. Also sends the CSA to the "selector" service.
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)
Returns True if a socketShutdown message is received on "_socketFeedback" inbox.
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