Skip to main content

Client server base class over socket

Project description

Summary

This module contains a simple base class for handling sockets

The communication protocol has these basic rules:

  • socket based using TCPIP; only one server per port
  • only one client connected at any time. When that client disconnects, another client is allowed to connect.
  • a "packet" is terminated by a line feed (0x0A).
  • a client sends a packet (aka "command") to the server.
  • Alternatively the server may respond with zero, one or more packets (aka "responses")
  • The server cannot initiate a response asynchronously by itself i.e. it must wait for an incoming command to send any packets to the client.
  • the following commands are predefined:
    • "ping" : the server will respond with "pong". The client can use this to confirm that the socket and communication channel are alive and responsive
    • "disconnect" : the server will initiate a disconnect from the current client
    • "shutdown" : the server will disconnect and then shutdown
    • "invalid" - the server has caught an exception when converting the incoming packet to ASCII (e.g. decode ('utf-8'))

More details

  • The server reads the incoming characters from the client one character at a time.
  • Once it sees the 0x0A character, it sets up a string buffer of all ASCII characters seen so far (less the 0x0A) and calls a callback function with that string.
  • The user must define that callback function.
  • The following is up to the user to define:
    • Which incoming commands are legal
    • What response to send if an illegal command is received
    • What response or responses should be sent for all legal commands
    • Determine whether an empty string is a legal command
    • How to handle the scenario when a linefeed needs to be part of a command
    • How to handle non-ASCII scenarios e.g. Unicode or byte strings.

Scripts

Sample code

see the sample directory for a sample client and server. Use doit script to run the sample server.

./doit
  • starts a server as a background process
  • starts a client and sends various commands to the server
  • stops that client
  • starts another client
  • sends some additional commands to the server
  • asks the server to shutdown

Other scripts and files

  • do_doc: generates doxygen
  • do_install: installs python environment
  • do_lint: runs static analysis tools
  • do_publish: publish the python module
  • do_ver: runs verification scripts
  • doit: runs a sample client & server
  • srs.json: holds a list of requirements the client/server must adhere to
  • test_ver.py: run by do_ver to perform verification
  • todo.md known issues to fix/address

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

socket_oneline-0.0.21.tar.gz (47.6 kB view details)

Uploaded Source

File details

Details for the file socket_oneline-0.0.21.tar.gz.

File metadata

  • Download URL: socket_oneline-0.0.21.tar.gz
  • Upload date:
  • Size: 47.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for socket_oneline-0.0.21.tar.gz
Algorithm Hash digest
SHA256 51976c7c84f2bb9149df55e34a7107b35fbd616a61a0e5cd9f87b4c5570eb676
MD5 219d2ebbea5c12365a867ab2bdd766e0
BLAKE2b-256 19db485e98d4fff891e4eeabdc889a85e38e076b17b07ed15040945ee36af9fd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page