Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Ανάπτυξη Δικτύων Καθηγητής: Φουληράς Παναγιώτης Προγραμματισμός Υποδοχών με Socket Programming with Python™ Φοιτητής: Σαμπρή Ογλού Μουράτ (133/05) Πανεπιστήμιο.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Ανάπτυξη Δικτύων Καθηγητής: Φουληράς Παναγιώτης Προγραμματισμός Υποδοχών με Socket Programming with Python™ Φοιτητής: Σαμπρή Ογλού Μουράτ (133/05) Πανεπιστήμιο."— Μεταγράφημα παρουσίασης:

1 Ανάπτυξη Δικτύων Καθηγητής: Φουληράς Παναγιώτης Προγραμματισμός Υποδοχών με Socket Programming with Python™ Φοιτητής: Σαμπρή Ογλού Μουράτ (133/05) Πανεπιστήμιο Μακεδονίας – Οικονομικών και Κοινωνικών Επιστημών27/03/2007

2 Γλώσσα Προγραμματισμού Python™  Γλώσσα υψηλού επιπέδου  Αναπτύχθηκε και παρουσιάστηκε, για πρώτη φορά το 1991, από τον Guido van Rossum  Είχε ξεκινήσει ως γλώσσα scripting για το λειτουργικό σύστημα Amoeba  Βασίστηκε κυρίως στην ABC, αλλά και στις C, Haskell, Icon, Lisp, Modula-3, Perl

3 Είναι...  Διερμηνευόμενη (interpreted) Χρησιμοποιεί διερμηνευτή, αντί για μεταγλωττιστή, που την κάνει πιο γρήγορη και ευέλικτη  Αλληλεπιδραστική (interactive) Ο διερμηνευτής μπορεί να χρησιμοποιηθεί αλληλεπιδραστικά για δοκιμή ενός μέρους του κώδικα ή για περεταίρω εξερεύνηση της γλώσσας γράφοντας απλές εντολές στη γραμμή εντολών  Αντικειμενοστρεφής (object-oriented) Όπως Java ή C++

4  Modules (ενότητες) Είναι γραμμένα σε μια γλώσσα που μεταγλωττίζεται Επεκτείνουν τη γλώσσα με νέες συναρτήσεις, μεταβλητές και τύπους δεδομένων  Classes (τάξεις)  Exceptions (εξαιρέσεις) Για να μπορεί να αντιμετωπίσει πιθάνα προβλήματα που μπορούν να προκύψουν κατά την εκτέλεση του προγράμματος  Εύκολη σύνταξη εντολών Χρησιμοποιεί...

5 Ενότητα socket (module) Το module socket προσφέρει στον προγραμματιστή τις συναρτήσεις και κλάσεις για να δημουργήσει προγράμματα που επικοινωνούν μέσω ενός δικτύου, με χρήση Stream Sockets για επικοινωνία με το πρωτόκολλο TCP (με σύνδεση) και Datagram Sockets για επικοινωνία με το πρωτόκολλο UDP (χωρίς σύνδεση)

6 Συναρτήσεις της ενότητας socket  socket Δημιουργεί ένα αντικείμενο socket mySocket = socket.socket( family, type ) family: AF_INETfamily: AF_INET type:type:  SOCK_STREAM: Stream socket (TCP)  SOCK_DGRAM: Datagram socket (UDP)

7 Συναρτήσεις της ενότητας socket  bind Διασυνδέει τη socket που δημιουργήθηκε με μια συγκεκριμένη διεύθυνση mySocket.bind( address ) address:address: Η διεύθυνση αποτελείται από δύο στοιχεία σε μορφή (host, port)  host: Διεύθυνση IP του Η/Υ  port: Θύρα του Η/Υ που θα χρησιμοποιηθεί

8 Συναρτήσεις της ενότητας socket  listen Θέτει τη socket σε κατάσταση αναμονής για να περιμένει αίτηση από clients Χρησιμοποιείται σε servers mySocket.listen( backlog ) backlog: μέγιστος αριθμός πελατών που μπορούν να κάνουν αίτηση για σύνδεση στον serverbacklog: μέγιστος αριθμός πελατών που μπορούν να κάνουν αίτηση για σύνδεση στον server

9 Συναρτήσεις της ενότητας socket  accept Αποδέχεται μια αίτηση για σύνδεση από έναν πελάτη Επιστρέφει ένα tuple δύο στοιχείων (σύνδεση, διεύθυνση) connection, address = mySocket.accept() connection: Αντικείμενο socket μέσω του οποίου ο server επικοινωνεί με τον πελάτηconnection: Αντικείμενο socket μέσω του οποίου ο server επικοινωνεί με τον πελάτη address: Η διεύθυνση IP του πελάτηaddress: Η διεύθυνση IP του πελάτη

10 Συναρτήσεις της ενότητας socket  send Αποστολή δεδομένων Χρησιμοποιείται σε connection-oriented επικοινωνία (TCP) mySocket.send( info ) info: Έχει τύπο stringinfo: Έχει τύπο string

11 Συναρτήσεις της ενότητας socket  sendto Αποστολή δεδομένων Χρησιμοποιείται σε connectionless επικοινωνία (UDP) mySocket.sendto( packet, address ) packet: Έχει τύπο stringpacket: Έχει τύπο string address: Διεύθυνση προορισμούaddress: Διεύθυνση προορισμού Έχει τη μορφή ( host, port )

12 Συναρτήσεις της ενότητας socket  recv Λήψη δεδομένων Χρησιμοποιείται σε connection-oriented επικοινωνία (TCP) mySocket.recv( bufsize ) bufsize: Μέγιστος όγκος δεδομένων που μπορεί να παραληφθεί (σε bytes)bufsize: Μέγιστος όγκος δεδομένων που μπορεί να παραληφθεί (σε bytes)

13 Συναρτήσεις της ενότητας socket  recvfrom Λήψη δεδομένων Χρησιμοποιείται σε connectionless επικοινωνία (UDP) packet, address = mySocket.recvfrom( bufsize ) packet: Πληροφορία που λήφθηκεpacket: Πληροφορία που λήφθηκε address: Πηγή της πληροφορίαςaddress: Πηγή της πληροφορίας bufsize: Μέγιστος όγκος πληροφορίας που μπορεί να παραληφθεί (σε bytes)bufsize: Μέγιστος όγκος πληροφορίας που μπορεί να παραληφθεί (σε bytes)

14 Συναρτήσεις της ενότητας socket  close Τερματίζει τη λειτουργία του αντικειμένου socket που δημιουργήσαμε και κλείνει τη σύνδεση mySocket.close()

15 Server για TCP (1) import socket HOST = " " PORT = 5000 counter = 0 #step 1: create socket mySocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) #step2: bind the socket to address try: mySocket.bind( (HOST,PORT) ) except socket.error: print "Call to bind failed“ while 1: #step3: wait for connection request print "Waiting for connection..." tcpserver.py Η διεύθυνση IP αναφέρεται στον Η/Υ που τρέχει το πρόγραμμα Δημιουργεί το αντικείμενο socket με το όνομα mySocket Διασυνδέει το αντικείμενο mySocket στο port 5000 Αν υπάρξει πρόβλημα (κατειλημμένο port) τότε σταματάει η εκτέλεση με ένα μήνυμα λάθους

16 Server για TCP (2) mySocket.listen(1) #step 4: establish connection for request connection, address = mySocket.accept() counter += 1 print "Connection", counter, "received from:", address[0] #step 5: echo data back to the client via connection connection.send( "Connection successful." ) clientMessage = connection.recv( 1024 ) while clientMessage != "EXIT": if not clientMessage: break print "CLIENT>>> " + clientMessage connection.send( clientMessage ) clientMessage = connection.recv( 1024 ) Ορίζει τον μέγιστο αριθμό πελατών που μπορούν να συνδεθούν σε 1. Δέχεται μια αίτηση για σύνδεση από κάποιον πελάτη Ορίζει το μέγιστο όγκο δεδομένων που μπορεί να δεχτεί από τον πελάτη Επικοινωνία μεταξύ πελάτη-διακομιστή

17 Server για TCP (3) #step6: close connection print "Connection terminated" connection.close() Τερματίζει τη σύνδεση

18 Client για TCP (1) import socket HOST = " " PORT = 5000 #step1: create socket print "Attempting connection" mySocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) #step2: make connection request to server try: mySocket.connect( (HOST,PORT) ) except socket.error: print "Call to connect failed" print "Connected to server“ tcpclient.py Δημιουργία ενός stream socket Αίτηση για σύνδεση στον διακομιστή

19 Client για TCP (2) #step3: transmit data via connection serverMessage = mySocket.recv( 1024 ) while serverMessage != "EXIT": if not serverMessage: break print "SERVER>>> " + serverMessage clientMessage = raw_input( "CLIENT>>> " ) mySocket.send( clientMessage ) serverMessage = mySocket.recv( 1024 ) #step4: close connection print "Connection teminated" mySocket.close() Επικοινωνία μεταξύ πελάτη-διακομιστή Τερματίζει τη σύνδεση με το διακομιστή

20 Server για UDP (1) import socket HOST = " " PORT = 5000 #step 1: create socket mySocket = socket.socket( socket.AF_INET, socket.SOCK_DGRAM ) #step 2: bind socket mySocket.bind( (HOST,PORT) ) while 1: #step 3: receive packet packet, address = mySocket.recvfrom( 1024 ) print "Packet received" print "From host: ", address[0] udpserver.py Δημιουργία ενός datagram socket για επικοινωνία χωρίς σύνδεση Διασύνδεση του αντικειμένου mySocket στο port 5000 Αναμονή μηνύματος Επιστρέφει το μήνυμα που δέχτηκε και τη διεύθυνση από όπου ήρθε

21 Server για UDP (2) print "Host port: ", address[1] print "Length: ", len(packet) print "Containing: " print "\t" + packet #step 4: echo packet to client print "\nEcho data to client...", mySocket.sendto( packet, address ) print "Packet sent\n" mySocket.close() Δέχεται το μήνυμα που θα σταλεί και τη διεύθυνση που θα σταλεί

22 Client για UDP (1) import socket HOST = " " PORT = 5000 #step 1: create socket mySocket = socket.socket( socket.AF_INET, socket.SOCK_DGRAM ) while 1: #step 2: send packet packet = raw_input ( "Packet>>>" ) print "\nSending packet containing: ", packet mySocket.sendto( packet, (HOST, PORT) ) print "Packet sent\n“ #step 3: receive packet back from server packet, address = mySocket.recvfrom( 1024 ) udpclient.py Δημιουργία ενός datagram socket για επικοινωνία χωρίς σύνδεση Αποστολή του packet στο HOST με PORT Παραλαβή πακέτου από την διεύθυνση address με μέγιστο μήκος 1024 bytes

23 Client για UDP (2) print "Packet received: " print "Form host: ", address[0] print "Host port: ", address[1] print "Length: ", len( packet ) print "Containing: " print "\t" + packet + "\n" mySocket.close()

24 Παράδειγμα με TCP Connection-oriented επικοινωνία πελάτη-διακομιστή

25

26

27

28

29

30 Παράδειγμα με UDP Connectionless επικοινωνία πελάτη-διακομιστή

31

32

33

34   nguage)  H. M. Deitel, P. J. Deitel, J. P. Liperi, B.A. Weidermann, “Python: How To Program”, Upper Saddle River, NJ: Prentice Hall, Σχόλια: Τα προγράμματα δημιουργήθηκαν και δοκιμάστηκαν στο λογισμικό Python 2.5 για Windows XP Σχετικές Ιστοσελίδες - Βιβλιογραφία


Κατέβασμα ppt "Ανάπτυξη Δικτύων Καθηγητής: Φουληράς Παναγιώτης Προγραμματισμός Υποδοχών με Socket Programming with Python™ Φοιτητής: Σαμπρή Ογλού Μουράτ (133/05) Πανεπιστήμιο."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google