teil13
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								teil13/__pycache__/network.cpython-39.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								teil13/__pycache__/network.cpython-39.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										15
									
								
								teil13/fib.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								teil13/fib.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| # fib.py | ||||
| import sys | ||||
|  | ||||
| # berechnet rekursiv die Fibonaccizahl n. | ||||
| def fib(n): | ||||
|  | ||||
| # Rekursionsbedingung | ||||
|   if n in [0,1]: | ||||
|     return 1 | ||||
|   else: | ||||
| # Rekursionsaufruf | ||||
|     return fib(n-1) + fib(n-2) | ||||
|  | ||||
| element = int(sys.argv[1]) | ||||
| print(fib(element)) | ||||
							
								
								
									
										60
									
								
								teil13/fibclient.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								teil13/fibclient.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| # encoding: utf-8 | ||||
| # fibclient.py | ||||
| import socket | ||||
| import time | ||||
| from network.const import __ADDRESS__ | ||||
|  | ||||
| DISCONNECT_MESSAGE = "!DISCONNECT" | ||||
|  | ||||
| # Verbindung herstellen | ||||
| def connect(): | ||||
|     client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | ||||
|     client.connect(__ADDRESS__) | ||||
|     return client | ||||
|  | ||||
| # msg senden | ||||
| def send(client, msg): | ||||
|     message = msg.encode('utf-8') | ||||
|     client.send(message) | ||||
|  | ||||
| # Daten empfangen | ||||
| def receive(conn): | ||||
|   msg = conn.recv(64).decode('utf-8') | ||||
|  | ||||
|   return msg | ||||
|  | ||||
| # Hauptmethode | ||||
| def start(): | ||||
| # String von Console lesen | ||||
|     answer = input('Verbindung aufbauen? (ja/nein)? ') | ||||
|     if answer.lower() != 'ja': | ||||
|         return | ||||
|  | ||||
| # Verbindung aufbauen | ||||
|     connection = connect() | ||||
|     while True: | ||||
|         msg = input("Nachricht (q für quit): ") | ||||
|  | ||||
| # Bei Eingabe == 'q' Schleife beenden. | ||||
|         if msg == 'q': | ||||
|             break | ||||
| # Sonst eingegeben String an Server senden. | ||||
|         send(connection, msg) | ||||
| # und auf Ergebnis warten. | ||||
|         result = receive(connection) | ||||
|         print(f'result={result}') | ||||
|  | ||||
| # Fibonaccizahl isolieren. | ||||
|         fib = int(result.split('[')[0]) | ||||
|         print(f'Fibonnaci-Zahl ist {fib}') | ||||
|         print(f'[RESULT] {result}') | ||||
|  | ||||
|  | ||||
| # zum Beenden die Nachricht 'quit an den Server senden | ||||
|     send(connection, 'quit') | ||||
|     time.sleep(1) | ||||
|     print('Disconnected') | ||||
|  | ||||
| # Hauptprogramm: Client starten | ||||
| if __name__ == '__main__': | ||||
|   start() | ||||
							
								
								
									
										92
									
								
								teil13/fibserver.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										92
									
								
								teil13/fibserver.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,92 @@ | ||||
| #! /usr/bin/python3 | ||||
|  | ||||
| import socket | ||||
| import threading | ||||
| from network.const import __ADDRESS__ | ||||
|  | ||||
| # Server-Socket aufbauen | ||||
| server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | ||||
|  | ||||
| #Socket an unsere Server-Adresse binden | ||||
| server.bind(__ADDRESS__) | ||||
|  | ||||
| # Set mit den verbundenen Clients | ||||
| clients = set() | ||||
|  | ||||
| # Locks für den Zugriff auf das Set | ||||
| clients_lock = threading.Lock() | ||||
|  | ||||
| # Unsere Arbeitsmethode: rekursive Fibonacci-Reihe | ||||
| def fib(n): | ||||
|  | ||||
| # Rekursionsbedingung | ||||
|   if n in [0,1]: | ||||
|     return 1 | ||||
|   else: | ||||
| # Rekursionsaufruf | ||||
|     return fib(n-1) + fib(n-2) | ||||
|  | ||||
| #bearbeitet eine eingehende Connection annehmen, pro Client  ein seperater Thread | ||||
| def handle_connection(conn,addr): | ||||
|   print(f"[NEW CONNECTION] {addr} Connected") | ||||
|  | ||||
|   try: | ||||
|     connected = True | ||||
|     while connected: | ||||
|       msg = conn.recv(64).decode('utf-8') | ||||
|       print(f'[RECEIVED] {msg}') | ||||
|       if not msg: | ||||
|         break | ||||
|       else: | ||||
|         if msg.startswith('fib:'): | ||||
|           element = int(msg[4:]) | ||||
|           fibo = fib(element) | ||||
|           print(f'[SENDING] fib({element})={fibo}') | ||||
| # Ergebnis an Client senden. | ||||
|           with clients_lock: | ||||
|             for c in clients: | ||||
|               c.sendall(f'{fibo}'.encode('utf-8')) | ||||
|         else: | ||||
|           pass | ||||
|  | ||||
|         if msg == 'quit': | ||||
|           print('[DISCONNECT]') | ||||
|           connected = False | ||||
|  | ||||
| #      with clients_lock: | ||||
| #        for c in clients: | ||||
| #          c.sendall(f"[{addr}] {msg}".encode('utf-8')) | ||||
|  | ||||
|   finally: | ||||
| # Clientverbindung abbauen und aus Set entfernen. | ||||
|       with clients_lock: | ||||
|         clients.remove(conn) | ||||
|  | ||||
|         conn.close() | ||||
|  | ||||
|  | ||||
| # Start des Servers | ||||
| def start(): | ||||
|     print('[SERVER STARTED]!') | ||||
| # Horchen nach eingehender Verbindung | ||||
|     server.listen() | ||||
|     while True: | ||||
| # Neue Verbindung annehmen | ||||
|  | ||||
|         conn, addr = server.accept() | ||||
| # Neuen Client in Set aufnehmen | ||||
|         with clients_lock: | ||||
|             print(f'[ADDING CONNECTION] {conn}') | ||||
|             clients.add(conn) | ||||
|  | ||||
| #Thread zur Bearbeitung des Requests starten. | ||||
|         thread = threading.Thread(target=handle_connection, args=(conn, addr)) | ||||
|         thread.start() | ||||
|  | ||||
| #Hauptprogramm: Serverstart einleiten | ||||
| if __name__ == '__main__': | ||||
|   start() | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
							
								
								
									
										11
									
								
								teil13/get_requests.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								teil13/get_requests.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| import requests | ||||
|  | ||||
| url = requests.get('https://raspithek.de') | ||||
|  | ||||
|  | ||||
| data = url.text | ||||
|  | ||||
|  | ||||
| print(data) | ||||
|  | ||||
|  | ||||
							
								
								
									
										20
									
								
								teil13/get_urllib.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								teil13/get_urllib.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| # encoding: UTF-8 | ||||
| import urllib.request | ||||
|  | ||||
| # URL öffnen und Daten anfordern. Ohne spezielle Dateiangabe | ||||
| # liefert der Webserver immer die index.html zurück. | ||||
| fp = urllib.request.urlopen('https://raspithek.de') | ||||
|  | ||||
| # Daten auslesen | ||||
| data = fp.read() | ||||
|  | ||||
| print(type(data)) | ||||
| # Die Daten sin vom Datentyp Bytes und müssen daher erst | ||||
| # zum UTF-8 String umkodiert werden. | ||||
| str = data.decode('utf8') | ||||
|  | ||||
| fp.close() | ||||
|  | ||||
| print(str) | ||||
|  | ||||
|  | ||||
							
								
								
									
										554
									
								
								teil13/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										554
									
								
								teil13/index.html
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								teil13/network/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								teil13/network/__init__.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								teil13/network/__pycache__/__init__.cpython-39.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								teil13/network/__pycache__/__init__.cpython-39.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								teil13/network/__pycache__/const.cpython-39.pyc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								teil13/network/__pycache__/const.cpython-39.pyc
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										10
									
								
								teil13/network/code.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								teil13/network/code.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| def receive(conn): | ||||
|   msg = conn.recv(64).decode('utf-8') | ||||
|  | ||||
|   return msg | ||||
|  | ||||
| def send(client, msg): | ||||
|     message = msg.encode('utf-8') | ||||
|     client.send(message) | ||||
|  | ||||
|  | ||||
							
								
								
									
										12
									
								
								teil13/network/const.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								teil13/network/const.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| #network/const.py | ||||
|  | ||||
| import socket | ||||
|  | ||||
| # TCP Port | ||||
| __PORT__ = 6554 | ||||
|  | ||||
| #Server-IP  | ||||
| __SERVER__ = socket.gethostbyname(socket.gethostname()) | ||||
|  | ||||
| # Server-Adresse (IP,Port) | ||||
| __ADDRESS__ = (__SERVER__,__PORT__) | ||||
							
								
								
									
										3
									
								
								teil13/substring.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								teil13/substring.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
|  | ||||
|  | ||||
| print('fib:58'[4:]) | ||||
							
								
								
									
										5
									
								
								teil13/test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								teil13/test.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| from network.const import __SERVER__ | ||||
| from network.const import __ADDRESS__ | ||||
|  | ||||
| print(f'Server:{__SERVER__}') | ||||
| print(f'Address:{__ADDRESS__}') | ||||
		Reference in New Issue
	
	Block a user