Κωνσταντίνος Αντωνής © 2014Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Ζητήματα Σχεδίασης Λογισμικού Πελάτη 1.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Το αλφαριθμητικό (string)
Advertisements

Δίκτυα υπολογιστών.
Ιστορία του Ιντερνετ.
ΠΜΣ ΔΥΝΗΤΙΚΕΣ ΚΟΙΝΟΤΗΤΕΣ
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ
Ανάπτυξη Δικτύων Καθηγητής: Φουληράς Παναγιώτης
Ειδικά Θέματα Κώδικες Ιστορικά - Εισαγωγή Αρχική σελίδα 16/8/2014 WinSock σε C Επιμέλεια παρουσίασης : Ζδράγκας Σωτήρης Κονταξής Αναστάσιος Ντακούλας.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Ενότητα Β: Εισαγωγή στο Διαδίκτυο Κουμπή Βασιλάντα, Ph.D, MSc.
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 19 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 1.
ΤCP/IP Τι είναι; Σύντομο Ιστορικό
Κεφάλαιο 11.2 Sockets.
Υποθετικός τελεστής Ο υποθετικός τελεστής (?:) αποτελείται από δύο σύμβολα. Ανήκει στην κατηγορία των τελεστών που αποτελούνται από συνδυασμό συμβόλων.
Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1.
Socket API (σε γλώσσα C) Σύντομη Εισαγωγή Παναγιώτης Φουληράς.
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
Κατανεμημένα Συστήματα με Java Ενότητα # 8: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
 ΠΡΟΚΕΙΤΑΙ ΓΙΑ ΔΩΡΕΑΝ ΥΠΗΡΕΣΙΑ ΠΟΥ ΜΑΣ ΠΑΡΕΧΕΙ DNS SERVERS ΟΙ ΟΠΟΙΟΙ ΕΙΝΑΙ ΠΡΟΡΥΘΜΙΣΜΕΝΟΙ ΝΑ ΦΙΛΤΡΑΡΟΥΝ  Παράνομο περιεχόμενο  Περιεχόμενο βίας ή άλλες.
Κεφάλαιο 10 – Υποπρογράμματα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
HY-335 : Δίκτυα Υπολογιστών DHCP Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Χειμερινό εξάμηνο
ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης.
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
Τεχνολογία 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.
Υπερφόρτωση Τελεστών (Συνέχεια) Αντικειμενοστραφής Προγραμματισμός.
2/28/00epl-1311 Παραδειγματα Aλγοριθμων Αριθμος λεξεων που διαβαστηκαν απο εισοδο Εκτυπωση περιφερειας τετραγωνων με * Υπολογισμος exp(x,n) = 1 + x/1!
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
Τι κρατάει το Internet μαζί? 1. Η διευθυνσιοποίηση (addressing): πως δηλ. αναφερόμαστε σε μια μηχανή στο δίκτυο. 2. Η δρομολόγηση (routing): πως να φτάσουμε.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
Σύνοψη 1 Αρχές διαδικτύου 1.1 Αναδρομή – εισαγωγή
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Κωνσταντίνος Αντωνής © 2014Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Ομοιόμορφη Αποδοτική Διαχείριση του Ταυτοχρονισμού των Εξυπηρετητών 1.
1 ο Εργαστήριο: Κατασκευή Εφαρμογών Client-Server echoserver και echoclient – Κώδικας εφαρμογών σε C Μπαλόμπας Παναγιώτης 8ο ΕΠΑΛ Θεσσαλονίκης 1 /* Αρχείο.
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ (ΕΡΓΑΣΤΗΡΙΟ). 2 Εξοικείωση με πρωτόκολλο TCP Connection Oriented Αξιοπιστία στην παράδοση Σειρά Καθυστερήσεις Χαρακτηριστικά.
Κεφάλαιο 7 Διαδικτύωση-Internet 7.3 Πρωτόκολλο TCP.
ΖΑΚΑΛΚΑ ΖΩΗ ΑΕΜ: 3128 Επιβλέποντες Καθηγητές: Δρ. Σπυρίδων Α. Καζαρλής, Δρ. Κωνσταντίνος Σ. Χειλάς.
ΕΙΔΙΚΑ ΘΕΜΑΤΑ ΣΕ ΚΙΝΗΤΑ ΚΑΙ ΑΣΥΡΜΑΤΑ ΔΙΚΤΥΑ ΙΩΑΝΝΑ ΚΑΛΛΗ (761) ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΑΡΑΡΤΗΜΑ ΑΓΡΙΝΙΟΥ ΤΜΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΠΟΛΙΤΙΣΜΙΚΟΥ.
Βασικές έννοιες και τεχνολογίες δικτύων Ιάκωβος Αλεξανδρής Ηλεκ/γος Μηχ/κος & Μηχ/κος Η/Υ Τεχνικός Υπεύθυνος ΚΕΠΛΗΝΕΤ Χαλκιδικής Cisco CCNA.
Arp και DHCP 3.3 Πρωτόκολλα ανεύρεσης και απόδοσης διευθύνσεων, Address Resolution Protocol (ARP) και Dynamic Host Configuration Protocol (DHCP)
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Κατανεμημένα Συστήματα
Δίκτυα Επικοινωνιών Ενότητα # 6: Επίπεδο Μεταφοράς TCP/UDP
Κεφάλαιο 7 Διαδικτύωση-Internet
ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ (ΕΡΓΑΣΤΗΡΙΟ)
Ειδικά Θέματα σε Κινητά & Ασύρματα Δίκτυα
Τεχνολογία και Προγραμματισμός Υπολογιστών
Κεφάλαιο 7: Διαδικτύωση-Internet
Λύσεις Ασφάλειας στο Επίπεδο Διασύνδεσης
Κεφάλαιο 6o. Επίπεδο εφαρμογής
Ειδικά Θέματα σε Κινητά και Ασύρματα Δίκτυα: 1η εργαστηριακή άσκηση
Κεφάλαιο 6o. Επίπεδο εφαρμογής
Κεφάλαιο 7:Διαδικτύωση-Internet
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
Το μοντέλο πελάτη - εξυπηρετητή
Κεφάλαιο 7: Διαδικτύωση-Internet
Κεφάλαιο 7: Διαδικτύωση-Internet Μάθημα 7.11: Πρωτόκολλα εφαρμογής
Εισαγωγή στον Προγ/μό Υπολογιστών
Εντολές Δικτύων Command Line.
Processes.
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Μεταγράφημα παρουσίασης:

Κωνσταντίνος Αντωνής © 2014Διαδικτυακός και Ταυτόχρονος Προγραμματισμός Ζητήματα Σχεδίασης Λογισμικού Πελάτη 1

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Αναγνώριση Τοποθεσίας Εξυπηρετητή Για την αναγνώριση της διεύθυνσης και της θύρας ενός εξυπηρετητή ο πελάτης μπορεί να ακολουθήσει μία από τις παρακάτω μεθόδους: Ο πελάτης διαθέτει το domain name ή τη διεύθυνση IP του εξυπηρετητή ορισμένη ως σταθερά. Ο πελάτης μπορεί να απαιτήσει από το χρήση να προσδιορίσει τον εξυπηρετητή κατά την κλήση Ο πελάτης μπορεί να αποκτήσει πληροφορίες για τον εξυπηρετητή π.χ. από ένα αρχείο Ο πελάτης μπορεί να χρησιμοποιεί ένα ξεχωριστό πρωτόκολλο για να βρει τον εξυπηρετητή π.χ. χρήση multicast ή broadcast μηνυμάτων 2

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Ανάλυση Ορίσματος Διεύθυνσης Ο χρήστης παρέχει είτε το όνομα περιοχής που βρίσκεται ο εξυπηρετητής: merlin.cs.purdue.edu Ή μια IP διεύθυνση : Μπορεί επίσης να συνδυάσει και τον προσδιορισμό της θύρας του πρωτοκόλλου σε ένα όρισμα merlin.cs.purdue.edu:smtp 3

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Αναζήτηση Ονόματος Περιοχής 4 #include struct hostent *gethostbyname(const char *hostname); struct hostent { char *h_name;/*official host name */ char **h_aliases;/*other aliases */ int h_addrtype;/*address type */ int h_length;/*address length */ char **h_addr_list;/*list of addresses */ }; #define h_addr h_addr_list[0]

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © Η δομή hostent

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Αναζήτηση Ονόματος Περιοχής (2) 6 struct hostent *hptr; struct sockaddr_in peeraddr; char *examplenam = "merlin.cs.purdue.edu"; //ή char *examplenam = argv[1]; if (hptr = gethostbyname (examplenam )) { /* IP address is now in hptr ->h_addr */ } else { /* error in name - handle it */ } peeraddr.sin_family = AF_INET; peeraddr.sin_addr.s_addr = ((struct in_addr *) (hptr->h_addr))->s_addr;

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Αναζήτηση Προκαθορισμένης Θύρας 7 #include struct servent *getservbyname(const char *servname, const char *protoname); struct servent { char *s_name; /*official service name */ char **s_aliases; /*other aliases */ int s_port; /*port for this service */ char *s_proto; /*protocol to use */ }; #include struct servent *getservbyport(int port, const char *protoname);

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Αναζήτηση Προκαθορισμένης Θύρας (2) 8 struct servent *sptr; if (sptr = getservbyname ("smtp","tcp" )) { /* port number is now in sptr ->s_port */ } else { /* error occurred - handle it */ } peeraddr.sin_port = sptr->s_port; Η χρήση συναρτήσεων όπως οι παραπάνω, οδηγεί σε μεγαλύτερη μεταφερσιμότητα, λειτουργικότητα και γενικότητα στην πλευρά του πελάτη, αφού είναι εφικτό το πέρασμα παραμέτρων

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Αναζήτηση Πρωτοκόλλου με το όνομα 9 struct protoent { char *p_name; /*official protocol name */ char **p_aliases; /*list of aliases allowed*/ int p_proto; /* official protocol number */ }; struct protoent *pptr; if (pptr = getprotobyname (“udp” )) { /* official protocol number is is now in pptr ->p_proto */ } else { /* error occurred - handle it */ }

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Αλγόριθμος Πελάτη TCP 1.Βρες τη διεύθυνση IP και τη θύρα πρωτοκόλλου του εξυπηρετητή 2.Απόκτησε ένα socket 3.Προσδιόρισε ότι η σύνδεση απαιτεί μια αυθαίρετη, αχρησιμοποίητη θύρα πρωτοκόλλου στο τοπικό μηχάνημα, και επέτρεψε στο TCP να διαλέξει μία 4.Σύνδεσε το socket στον εξυπηρετητή 5.Επικοινώνησε με τον εξυπηρετητή χρησιμοποιώντας το πρωτόκολλο επιπέδου εφαρμογής 6.Τερμάτισε τη σύνδεση 10

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Μερικό Κλείσιμο Σύνδεσης 11 #include errcode=shutdown(s,direction); Δυνατές τιμές για την παράμετρο direction: 0 : δεν επιτρέπεται καμιά περαιτέρω είσοδος 1 : δεν επιτρέπεται καμιά περαιτέρω έξοδος 2 : τερματισμός και ως προς τις δύο κατευθύνσεις Η συνάρτηση shutdown αναφέρει τον τερματισμό στο απομακρυσμένο μηχάνημα μόνο στο TCP

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Αλγόριθμος Πελάτη UDP 1.Βρες τη διεύθυνση IP και τη θύρα πρωτοκόλλου του εξυπηρετητή 2.Απόκτησε ένα socket 3.Προσδιόρισε ότι η σύνδεση απαιτεί μια αυθαίρετη, αχρησιμοποίητη θύρα πρωτοκόλλου στο τοπικό μηχάνημα, και επέτρεψε στο UDP να διαλέξει μία 4.Καθόρισε τον εξυπηρετητή στον οποίο πρέπει να σταλούν τα μηνύματα 5.Επικοινώνησε με τον εξυπηρετητή χρησιμοποιώντας το πρωτόκολλο επιπέδου εφαρμογής 6.Κλείσε το socket 12

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Βιβλιοθήκη Διαδικασιών για Προγράμματα Πελατών /* connectTCP.c - connectTCP */ int connectsock(const char *host, const char *service,const char *transport); /* *connectTCP - connect to a specified TCP service on a specified host * */ int connectTCP (const char *host, const char *service ) /* * Arguments: * host - name of host to which connection is desired service - service associated with the desired port*/ {return connectsock( host, service, "tcp");} 13

Διαδικτυακός και Ταυτόχρονος ΠρογραμματισμόςΚωνσταντίνος Αντωνής © 2014 Βιβλιοθήκη Διαδικασιών για Προγράμματα Πελατών (2) /* connectUDP.c - connectUDP */ int connectsock(const char *host, const char *service,const char *transport); /* *connectUDP - connect to a specified UDP service on a specified host * */ int connectUDP (const char *host, const char *service ) /* * Arguments: * host - name of host to which connection is desired service - service associated with the desired port*/ {return connectsock( host, service, “udp”);} 14