#!/usr/bin/env python3

import pickle
import socket
import sys


def server():
    serversocket = socket.socket(
        socket.AF_INET, socket.SOCK_STREAM
    )
    serversocket.bind(('0.0.0.0', 8051))
    serversocket.listen(5)
    while True:
        (clientsocket, address) = serversocket.accept()
        print("New client")
        socketfile = clientsocket.makefile('rb')
        while True:
            try:
                obj = pickle.load(socketfile)
            except EOFError:
                print("Client disconnected")
                break
            print("Received object:", obj)


def client():
    sock = socket.socket(
        socket.AF_INET, socket.SOCK_STREAM
    )
    sock.connect(('localhost', 8051))
    sockfile = sock.makefile('wb')
    for i in range(3):
        obj = ("Thing", i)
        pickle.dump(obj, sockfile)
    sock.close()


if sys.argv[1] == 'server':
    server()
else:
    client()