Python Programmierung. Dipl.-Ing.(FH) Volker Schepper

Größe: px
Ab Seite anzeigen:

Download "Python Programmierung. Dipl.-Ing.(FH) Volker Schepper"

Transkript

1 Python Programmierung

2 String Operationen i = 25 text1 = "Ich bin " text2 = " Jahre alt" print (text1 + str(i) + text2) print ("ich bin", i, "Jahre alt") print ("ich bin %s Jahre alt" % i) >>> Ich bin 25 Jahre alt Ich bin 25 Jahre alt Ich bin 25 Jahre alt >>>

3 Netzwerk Schicht 5-7: Anwendungen Protokoll: HTTP; FTP; POP3; Telnet Schicht 4: Transport Layer Protokoll: TCP / UDP Schicht 3: Network Layer Protokoll: IP Schicht 2: Data Link Ethernet Das ISO OSI Referenzmodell gliedert sich in 7 Schichten. Es standardisiert und spezifiziert welche Aufgaben die einzelnen Schichten haben. Schicht 1: Physical Layer Leitung

4 IP (v4)- Netzwerk Jeder Rechner besitz eine oder mehrere eindeutige IP Adresse. Jeder Rechner besitz eine interne IP-Adresse ( ). Diese IP- Adresse dient zur internen Kommunikation zwischen Programmen oder Modulen.

5 Port - Netzwerk Sollen Daten zwischen zwei Stellen ausgetauscht werden. Muss die IP-Adresse des Empfängers zwingend bekannt sein, sowie der Port. Wenn mehr als ein Programm Daten vom Netzwerk empfangen möchte, müssen die Daten eindeutig zugeordnet werden. Der Port ermöglicht es, ein bestimmtes Programm anzusprechen. Es können Portnummer zwischen 0 bis vergeben werden. Ab Portnummer kann für eigene Anwendungen verwendet werden. Darunter ist auch prinzipiell möglich. Jedoch muss dort auf eventuelle Konflikte geachtet werden.

6 Netzwerk UDP Client import socket s = socket.socket(socket.af_inet, socket.sock_dgram) msg_out = "Hallo Welt" s.sendto(msg_out, (" ", 50007)) s.close() Funktionsaufruf socket erzeugt eine Socket-Instanz. Es werden zwei Parameter (Konstanten) übergeben: AF_INET = IPv4 SOCK_DGRAM = UDP

7 Netzwerk UDP Server import socket PORT = BUFSIZE = 1024 s = socket.socket(socket.af_inet, socket.sock_dgram) s.bind(("", PORT)) print ("UDP-Server gestartet...") while 1: data, (client_ip,client_port) = s.recvfrom(bufsize) print ("[%s %s]: %s" % (client_ip,client_port,data)) s.close()

8 (Nicht) blockierende Socket Wird ein Socket erstellt, befindet sich dieser im blockierenden Modus. Das bedeutet, dass der ein Aufruf der Methode recvform eines Socket das komplette Programm blockiert, bis tatsächlich Daten eingegangen sind. Nicht blockierenden Modus s.setblocking(false) Blockierenden Modus s.setblocking(false) Sind Daten im Puffer des Socket werden diese übergeben. Andernfalls wird ein socket.error Exception ausgeben. Der Kontrollfluss wird wieder an das Programm gegeben. Es muss die Exception abgefangen werden.

9 Netzwerk UDP Server import socket PORT = BUFSIZE = 1024 s = socket.socket(socket.af_inet, socket.sock_dgram) s.setblocking(false) try: finally: s.bind(("", PORT)) print ("UDP-Server gestartet...") while 1: try: data, (client_ip,client_port) = s.recvfrom(bufsize) print ("[%s %s]: %s" % (client_ip,client_port,data)) except socket.error: pass s.close()

10 Netzwerk TCP Server import socket s = socket.socket(socket.af_inet, socket.sock_stream) s.bind(("", 50010)) s.listen(1) try: while True: komm, addr = s.accept() while True: data = komm.recv(1024) if not data: komm.close() break print ("[%s] %s" % (addr[0], data)) finally: s.close()

11 Netzwerk TCP Client import socket ip = str(raw_input("ip-adresse: ")) s = socket.socket(socket.af_inet, socket.sock_stream) s.connect((" ", 50010)) try: finally: nachricht = "hallo python" s.send(nachricht) s.close()

12 Webserverbasierte Anwendung Common Gateway Interface (CGI) Eine webserverbasierte Anwendung wird mit der sogenannten Common Gateway Interface (CGI) realisiert. Ein Webserver (Apache) ruft das entsprechende Skript auf, welches dynamische eine HTML-Webseite mittels Standardausgabe erstellt. Das erstellte Dokument betrachtet der Endanwender in seinem Webbrowser.

13 Webserverbasierte Anwendung #!C:\Python\python.exe print("<html>") print("<head>") print("<title>homepage zur Darstellung des CGI</title>") print("</head>") print("<body>") print("python ist einfach toll.<br>") print("viele Grüße") print("</body>") print("<html>")

14 Webserverbasierte Anwendung <form method="post" action="/cgi-bin/formular_auswertung.py"> Name: <input type="text" name="anwender"/><br> Passwort : <input type="password" name="passwort"/><br> <input type="submit" name="submit"/><br>

15 Webserverbasierte Anwendung #!C:\Python\python.exe import cgi form=cgi.fieldstorage() username = form["anwender"].value userpsw = form["passwort"].value

16 CGI Enviroment Variables Mit den CGI Enviroment Variablen können auf Webserver spezifische Größen zugreifen werden. Variable Name SERVER_PORT REMOTE_ADDR REMOTE_HOST HTTP_USER_AGENT SCRIPT_FILENAME Description The port number your server is listening on The IP address of the visitor The hostname of the visitor The browser type of the visitor The full pathname of the current CGI

17 Webserverbasierte Anwendung Als Entwicklungsumgebung kann z.b. das Programmpaket xampp für Windows verwendet werden. Programme: Apache & MySQL