Commit b138e2f9 authored by Agrigor's avatar Agrigor
Browse files

More OOP for client.py

parent 8bfb48cb
############################################################################### # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
########################## IMPORT LIBRARIES ################################### # ~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT LIBRARIES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
############################################################################### # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
import time import time
import signal
import sys import sys
import socket import socket
import threading
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~ GLOBAL CONSTANTS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~ CLASS DEFINITION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
############################################################################### # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
########################## GLOBAL CONSTANTS ################################### # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ MAIN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
############################################################################### # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Network Constants
SOURCE_IP = sys.argv[1] class Client:
PORT = 50000 def __init__(self, ip, port):
UDP = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.source_ip = ip
self.port = port
############################################################################### # Initialize source ip adress
########################## DEFINITION FUNCTIONS ############################### try:
############################################################################### socket.inet_aton(self.source_ip)
except socket.error:
def init(): print("First argument was no valid IP-address")
# Initialize source ip adress sys.exit(0)
try: else:
socket.inet_aton(SOURCE_IP) self.UDP = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
except socket.error: self.UDP.bind(("", self.port))
print("First argument was no valid IP-address")
def cleanup(self):
self.UDP.close()
print("\n Bye Bye")
sys.exit(0) sys.exit(0)
else:
# Initialize signal handling for interrupt by CTRL+C or kill command def main(self):
signal.signal(signal.SIGINT, quit)
# Initialize UDP socket binding
UDP.bind(("", PORT))
# Things to be done before end of programm
def quit(signal, frame):
UDP.close()
print("\n Bye Bye")
sys.exit(0)
###############################################################################
################################## MAIN #######################################
###############################################################################
# Mainfunction which includes the whole program
def main():
# Initialize
init()
while True:
# Wait on button event and print some lazy messages
try: try:
daten, addr = UDP.recvfrom(1024) self.daten, self.addr = self.UDP.recvfrom(1024)
if addr[0] == SOURCE_IP: if self.addr[0] == self.source_ip:
print(addr[0], daten.decode()) print(self.addr[0], self.daten.decode())
else: else:
print("Any hacker (IP: " + addr[0] + ") tries to kidding me, now I'll kill him!") print("Any hacker (IP: " + self.addr[0] + ") tries to kidding me, now I'll kill him!")
except OSError: except OSError:
print("...no connection...") print("...no connection...")
time.sleep(1) time.sleep(1)
finally:
self.cleanup()
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PROGRAM ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
###############################################################################
################################# PROGRAM #####################################
###############################################################################
# Start Client # Start Client
main() client = Client(sys.argv[1], 50000)
client.main()
############################################################################### # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#################################### END ###################################### # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ END ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
############################################################################### # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment