Skip to main content

server and client for simple, one line communication protocol

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-1.2.0.tar.gz (10.1 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: socket_oneline-1.2.0.tar.gz
  • Upload date:
  • Size: 10.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for socket_oneline-1.2.0.tar.gz
Algorithm Hash digest
SHA256 5f6735454f3f729274ae8524690ec6de459275dcb0d61d17526cca5c321daeb9
MD5 818cb6e51f5ca851b7d999cde429c8a6
BLAKE2b-256 d7852dc17b35a1b0887f74d287fab353acd276c1eb61fc59303c0d30b6b7152a

See more details on using hashes here.

Supported by

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