forked from Krautspace/doorstatus
initiler commit
initialer commit eines servers, der ein bit aus einem socket liest
This commit is contained in:
commit
dc088179f5
1 changed files with 75 additions and 0 deletions
75
server-clear.py
Executable file
75
server-clear.py
Executable file
|
@ -0,0 +1,75 @@
|
|||
#!/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
|
||||
|
||||
|
||||
def connection_handle(conn):
|
||||
|
||||
data = conn.recv(1).decode()
|
||||
if data == '0' or data == '1':
|
||||
if update_status(data) == True:
|
||||
conn.send(data.encode())
|
||||
else:
|
||||
conn.send(b'3')
|
||||
else:
|
||||
print('Invalid argument')
|
||||
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 = '127.0.0.1'
|
||||
PORT = 64000
|
||||
|
||||
with socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) as mySocket:
|
||||
print('Socket created')
|
||||
try:
|
||||
mySocket.bind((HOST, PORT))
|
||||
mySocket.listen()
|
||||
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:
|
||||
conn = None
|
||||
try:
|
||||
conn, addr = mySocket.accept()
|
||||
print('Connection from {}:{}'.format(addr[0], addr[1]))
|
||||
connection_handle(conn)
|
||||
except KeyboardInterrupt:
|
||||
print('\b\bExit')
|
||||
exit()
|
||||
except Exception as e:
|
||||
print('Error: {}'.format(e))
|
||||
finally:
|
||||
if conn:
|
||||
conn.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Reference in a new issue