Skip to content

Instantly share code, notes, and snippets.

@markrwilliams
Created February 2, 2018 20:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save markrwilliams/6a3fe6ab2f8743132bece8b113883cce to your computer and use it in GitHub Desktop.
Save markrwilliams/6a3fe6ab2f8743132bece8b113883cce to your computer and use it in GitHub Desktop.
import argparse
import socket
parser = argparse.ArgumentParser(description="keepalive example")
parser.add_argument("mode", choices=("server", "client"))
def server():
listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listener.bind(('localhost', 9999))
listener.listen(1)
client, _ = listener.accept()
client.recv(1024)
def client():
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Activate TCP keep alive.
client.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
# Wait one minute before sending a keep alive segment.
client.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 60)
client.connect(('localhost', 9999))
client.recv(1024)
{"client": client, "server": server}[parser.parse_args().mode]()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment