Skip to main content

A simplified TCP/IP socket setup suitable for many/most lightweight client server programs. The python standard library `socket` module has a relatively steep learning curve. The `socket_for_humans` module will help get most projects up and running quickly by wrapping the Python standard library socket module in an easy to use interface.

Project description

socket_for_humans

A simplified TCP/IP socket setup suitable for many/most lightweight client server programs. The python standard library socket module has a relatively steep learning curve. The socket_for_humans module will help get most projects up and running quickly by wrapping the Python standard library socket module in an easy to use interface.

socket_for_humans provides two types of objects Server and Connection. The Server object is used to passively listen for new connections, while the Connection object is used to actively initiate a connection and thereafter, once a connection is established, for sending and receiving on both sides of the socket communications.

By default the send and receive functions take/return str rather than bytes, which is probably what most users initially want, if you want bytes then use str_mode=False in the object constructors.

socket_for_humans is the communications module used in the simple_gossip python gossip protocol.

Usage:

Essential usage follows this pattern:

Example server code:

from socket_for_humans import Server

addr = ('127.0.0.1', 12345)
my_server = Server(addr)
while True:
    msg, conn, addr = my_server.get_next()
    # msg is the msg recieved by the server.
    # conn is a Connection instance used to continue send and receive with client
    # addr is the clients address like (ip, port)
    if msg:
        # do whatever you need to do with received msg
        print(msg)
        conn.send("here is my reply")
        msg2 = conn.recv()
        print(msg2)
        conn.send("here is my further reply, if you really want to know")
        # continue to use conn to send and receive until the purpose is satisfied.
        conn.close()

Example client code:

from socket_for_humans import Connection

addr = ('127.0.0.1', 12345)
my_client = Connection(addr)

msg = "a question to the server"
print("Client sending: " + msg)
my_client.send(msg)
reply = my_client.recv()
print("Client received: " + reply)

msg2 = "a further question to the server"
print("Client sending: " + msg2)
my_client.send(msg2)
reply2 = my_client.recv()
print("Client received: " + reply2)
# continue to use my_client to send and receive until the purpose is satisfied.
my_client.close()

See these example files for more usage ideas

Run examples/example_server.py and examples/example_client.py at the same time on same machine to see a 2-way communication on a socket in just a few lines.

Run examples/example_server_b.py and examples/example_client_b.py at the same time on same machine to see the same example with binary bytes data instead of str data.

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_for_humans-0.0.3.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

socket_for_humans-0.0.3-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file socket_for_humans-0.0.3.tar.gz.

File metadata

  • Download URL: socket_for_humans-0.0.3.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for socket_for_humans-0.0.3.tar.gz
Algorithm Hash digest
SHA256 a801aba29963d5eb7af9c9071f376bcebc170c1dbbd6ec0df610b766eaf17c39
MD5 9d2fec21a7a23ceef3bb78bec99642b8
BLAKE2b-256 d49724497c71070c9b766c5854dd82d1d0bf94d613d6ff0f9ff215320ac584c0

See more details on using hashes here.

File details

Details for the file socket_for_humans-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: socket_for_humans-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for socket_for_humans-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 56fd2db56d751b83a9015b56bc492dccfc66391028286c3461a5fe1d0aba9e21
MD5 2ad717369257222eaaf1bfac3b73fb92
BLAKE2b-256 6d7642e2887d95524103e2ed825ddbe1645cff32a898df83713bc5f5e964cf42

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