#!/usr/bin/python3 # file: server-clear.py # date: 26.07.2019 # email: berhsi@web.de # server, who listen for connections for localhost, port 64000 and ipv4. import socket from time import time, ctime from sys import exit, byteorder def connection_handle(conn): bom = byteorder raw_data = conn.recv(1) print('Data recived: {}'.format(raw_data)) data = int.from_bytes(raw_data, bom) if data == 0 or data == 1: if update_status(data) == True: conn.send(data.to_bytes(1, bom)) else: conn.send(b'\x03') else: print('Invalid argument') conn.send(b'3') return False return True def update_status(data): try: print('Update status ...') if data == 0: status = 'false' else: status = 'true' lastchange = str(time()).split('.')[0] print('Change status: {}: {}'.format(lastchange, status)) except Exception as e: print('Error: {}'.format(e)) return False return True def main(): HOST = 'nr18.space' PORT = 10001 with socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) as mySocket: print('Socket created') try: mySocket.bind((HOST, PORT)) mySocket.listen(5) print('Listen on {} at Port {}'.format(HOST, PORT)) except Exception as e: print('Error: unable to bind and listen') print('Error: {}'.format(e)) while True: try: conn, addr = mySocket.accept() print('Connection from {}:{}'.format(addr[0], addr[1])) conn.settimeout(3.0) connection_handle(conn) except KeyboardInterrupt: print('\b\bExit') exit() except Exception as e: print('Error: {}'.format(e)) if __name__ == '__main__': main()