Ανάπτυξη Δικτύων Καθηγητής: Φουληράς Παναγιώτης

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
Advertisements

Υλοποίηση Συστήματος Ψηφοφορίας με τη χρήση Java RMI
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Επικοινωνία μεταξύ διεργασιών Απομακρυσμένες κλήσεις και αντικείμενα
5η Συνάντηση Εκπαιδευτικών Πληροφορικής στη Δυτική Μακεδονία Πτολεμαΐδα, 29 Σεπτ 2005 Δημιουργία Δυναμικών Ιστοσελίδων με PHP και Dreamweaver MX Στυλιάδης.
Ιστορία του Ιντερνετ.
Ανάλυση και Σύνθεση Τηλεπικοινωνιακών Διατάξεων (ΤΗΛ412)
Δίκτυα Υπολογιστών Εργαστήριο 1.
ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΙΝΗΣΗ ΑΓΑΘΩΝ & ΚΡΥΠΤΟΓΡΑΦΙΑ ΑΘΑΝΑΣΙΟΣ ΒΑΣΙΛΟΠΟΥΛΟΣ - ΓΟΥΤΑΣ ΔΗΜΗΤΡΙΟΣ PeLAB - Τμ. Η.Υ.Σ. - Τ.Ε.Ι. ΠΕΙΡΑΙΑ : Μάρτιος 1998.
Java: Socket API (Υποδοχές)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ
Ειδικά Θέματα Κώδικες Ιστορικά - Εισαγωγή Αρχική σελίδα 16/8/2014 WinSock σε C Επιμέλεια παρουσίασης : Ζδράγκας Σωτήρης Κονταξής Αναστάσιος Ντακούλας.
Σύνοψη 1 Αρχές διαδικτύου 1.1 Αναδρομή – εισαγωγή
ΜΑΘ-3122/106 Προγραμματισμός
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Διαχείριση Δικτύων Ευφυή Δίκτυα Άσκηση 1: Χρήση βασικών εργαλείων για συλλογή πληροφοριών για τη διαμόρφωση και την κατάσταση λειτουργίας του δικτύου.
Uniform Resource Locators (URLs) Ορισμός : URL (Uniform Resource Locator): Δείκτης σε μία πηγή πληροφοριών του Παγκοσμίου Ιστού (World Wide Web) Στη Java,
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 19 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1.
JAVA και SQL Δαμιανός Χατζηαντωνίου
ΜΟΝΤΕΛΟ ΕΞΥΠΗΡΕΤΟΥΜΕΝΟΥ – ΕΞΥΠΗΡΕΤΗΤΗ ( CLIENT – SERVER )
ΤCP/IP Τι είναι; Σύντομο Ιστορικό
Κεφάλαιο 11.2 Sockets.
Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1.
Socket API (σε γλώσσα C) Σύντομη Εισαγωγή Παναγιώτης Φουληράς.
Τμήμα Πληροφορικής Πανεπιστημίου Κύπρου ΕΠΛ 371 – Προγραμματισμός Συστημάτων Ονόματα: Αντώνης Μαυρής, Γιώργος Ματθαίου, Χρίστος Κυριάκου Ταυτότητες: ,
Κατανεμημένα Συστήματα με Java Ενότητα # 8: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
National Technical University of AthensΤεχνολογίες Διαδικτύου Σύνοψη 1Αρχές διαδικτύου 1.1 Αναδρομή – εισαγωγή 1.2 Πρωτόκολλα TCP/IP Διαστρωμάτωση.
PHP/MYSQL ΠΑΡΟΥΣΙΑΣΗ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΕΠΟΙΚΟΙΝΩΝΙΑ ΑΝΘΡΩΠΟΥ-ΜΗΧΑΝΗΣ ΤΥΡΟΛΟΓΟΥ ΓΛΥΚΕΡΙΑ ΑΜ 875 ΡΙΖΟΥ ΔΕΣΠΟΙΝΑ ΑΜ 816.
Γλωσσική Τεχνολογία Εισαγωγικό Φροντιστήριο. Project του μαθήματος  Εργασία 2 ατόμων  Προφορική εξέταση για :  Project (80%)  Θεωρία (20%)  Στο φροντιστήριο.
Διαχείριση Δικτύων Ευφυή Δίκτυα Άσκηση 2: Ανάλυση Δικτυακής Κίνησης – Πρωτοκόλλων - Υπηρεσιών Εργαστήριο Διαχείρισης και Βέλτιστου Σχεδιασμού Δικτύων (NETMODE)
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
ΕΠΛ371 – ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΥΣΤΗΜΑΤΩΝ
HY-335 : Δίκτυα Υπολογιστών DHCP Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο
Τεχνολογία TCP/IP TCP/IP internet είναι ένα οποιοδήποτε δίκτυο το οποίο χρησιμοποιεί τα πρωτόκολλα TCP/IP. Διαδίκτυο (Internet) είναι το μεγαλύτερο δίκτυο.
University of Cyprus Department of Computer Science Presenter : Yiannos Mylonas EPL475: Advanced Networks TCP/IP Socket Programming in C.
Κεφάλαιο 11.1 Uniform Resource Locators (URLs). Ορισμός : URL (Uniform Resource Locator): Δείκτης σε μία πηγή πληροφοριών του Παγκοσμίου Ιστού (World.
Διαχείριση Δικτύων Ευφυή Δίκτυα Άσκηση 1: Χρήση βασικών εργαλείων για συλλογή πληροφοριών για τη διαμόρφωση και την κατάσταση λειτουργίας του δικτύου.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Κεφάλαιο 4 Εξαιρέσεις. Όταν σε ένα πρόγραμμα συμβεί κάποιο λάθος, ο κώδικας εγείρει (throw) μία εξαίρεση. Στη Java oι εξαιρέσεις εκπροσωπούνται από αντικείμενα.
ΕΙΣΑΓΩΓΙΚΟ ΦΡΟΝΤΙΣΤΗΡΙΟ Διαχείριση Περιεχομένου Παγκόσμιου Ιστού και Γλωσσικά Εργαλεία.
Διαχείριση Δικτύων Ευφυή Δίκτυα Άσκηση 4: Ανάλυση Δικτυακής Κίνησης – Πρωτοκόλλων - Υπηρεσιών Εργαστήριο Διαχείρισης και Βέλτιστου Σχεδιασμού Δικτύων (NETMODE)
Κωνσταντίνος Αντωνής © 2014Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Ζητήματα Σχεδίασης Λογισμικού Πελάτη 1.
1 ο Εργαστήριο: Κατασκευή Εφαρμογών Client-Server echoserver και echoclient – Κώδικας εφαρμογών σε C Μπαλόμπας Παναγιώτης 8ο ΕΠΑΛ Θεσσαλονίκης 1 /* Αρχείο.
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ (ΕΡΓΑΣΤΗΡΙΟ). 2 Εξοικείωση με πρωτόκολλο TCP Connection Oriented Αξιοπιστία στην παράδοση Σειρά Καθυστερήσεις Χαρακτηριστικά.
ΖΑΚΑΛΚΑ ΖΩΗ ΑΕΜ: 3128 Επιβλέποντες Καθηγητές: Δρ. Σπυρίδων Α. Καζαρλής, Δρ. Κωνσταντίνος Σ. Χειλάς.
Έλεγχος και ρύθμιση σύνδεσης δικτύου Ανάγνωση πληροφοριών δικτυακών ρυθμίσεων από γραμμή εντολών Ιδιότητες σύνδεσης δικτύου Ρυθμίσεις σύνδεσης δικτύου.
Εισαγωγή στην Python.
User Datagram Protocol (UDP)
Δίκτυα Υπολογιστών Ι.
Arp και DHCP 3.3 Πρωτόκολλα ανεύρεσης και απόδοσης διευθύνσεων, Address Resolution Protocol (ARP) και Dynamic Host Configuration Protocol (DHCP)
Κατανεμημένα Συστήματα
Κεφάλαιο 4. Επίπεδο μεταφοράς
ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ
Internet Control Message Protocol (ICMP)
Κατανεμημένα Συστήματα
Δίκτυα Επικοινωνιών Ενότητα # 6: Επίπεδο Μεταφοράς TCP/UDP
TCP/IP.
Κεφάλαιο 7 Διαδικτύωση-Internet
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ (ΕΡΓΑΣΤΗΡΙΟ)
Great Sand Dunes Η χρονογραμμή που ακολουθεί βασίστηκε στο πρότυπο της Christy Keeler ( Πηγές περιεχομένου.
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
Κεφάλαιο 7: Διαδικτύωση-Internet
Κεφάλαιο 7: Διαδικτύωση-Internet
3. Βασικά στοιχεία γλώσσας προγραμματισμού
Κεφάλαιο 4. Επίπεδο μεταφοράς
Εισαγωγή στον Προγραμματισμό με Python, ΑΠΘ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ Εισαγωγή στον Προγραμματισμό με Python Εβδομάδα 1: Βασικά στοιχεία.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Μεταγράφημα παρουσίασης:

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

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

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

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

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

Συναρτήσεις της ενότητας socket mySocket = socket.socket( family, type ) family: AF_INET type: SOCK_STREAM: Stream socket (TCP) SOCK_DGRAM: Datagram socket (UDP)

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

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

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

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

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

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

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

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

Server για TCP (1) tcpserver.py import socket HOST = "127.0.0.1" 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..." Η διεύθυνση IP 127.0.0.1 αναφέρεται στον Η/Υ που τρέχει το πρόγραμμα Δημιουργεί το αντικείμενο socket με το όνομα mySocket Διασυνδέει το αντικείμενο mySocket στο port 5000 Αν υπάρξει πρόβλημα (κατειλημμένο port) τότε σταματάει η εκτέλεση με ένα μήνυμα λάθους

Server για TCP (2) while clientMessage != "EXIT": 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 ) Ορίζει τον μέγιστο αριθμό πελατών που μπορούν να συνδεθούν σε 1. Δέχεται μια αίτηση για σύνδεση από κάποιον πελάτη Ορίζει το μέγιστο όγκο δεδομένων που μπορεί να δεχτεί από τον πελάτη Επικοινωνία μεταξύ πελάτη-διακομιστή

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

Client για TCP (1) tcpclient.py import socket HOST = "127.0.0.1" #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“ Δημιουργία ενός stream socket Αίτηση για σύνδεση στον διακομιστή

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 ) #step4: close connection print "Connection teminated" mySocket.close() Επικοινωνία μεταξύ πελάτη-διακομιστή Τερματίζει τη σύνδεση με το διακομιστή

Server για UDP (1) udpserver.py import socket HOST = "127.0.0.1" #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] Δημιουργία ενός datagram socket για επικοινωνία χωρίς σύνδεση Διασύνδεση του αντικειμένου mySocket στο port 5000 Αναμονή μηνύματος Επιστρέφει το μήνυμα που δέχτηκε και τη διεύθυνση από όπου ήρθε

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() Δέχεται το μήνυμα που θα σταλεί και τη διεύθυνση που θα σταλεί

Client για UDP (1) udpclient.py import socket HOST = "127.0.0.1" #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 ) Δημιουργία ενός datagram socket για επικοινωνία χωρίς σύνδεση Αποστολή του packet στο HOST με PORT Παραλαβή πακέτου από την διεύθυνση address με μέγιστο μήκος 1024 bytes

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()

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

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

Σχετικές Ιστοσελίδες - Βιβλιογραφία http://www.python.org http://en.wikipedia.org/wiki/Python_(Programming_Language) H. M. Deitel, P. J. Deitel, J. P. Liperi, B.A. Weidermann, “Python: How To Program”, Upper Saddle River, NJ: Prentice Hall, 2002. Σχόλια: Τα προγράμματα δημιουργήθηκαν και δοκιμάστηκαν στο λογισμικό Python 2.5 για Windows XP