Ζητήματα Σχεδίασης Λογισμικού Πελάτη

Σχετικά έγγραφα
Δικτυακός Προγραμματισμός (Sockets Programming) Εργαστήριο Γ Εξάμηνο, Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας

Socket Application Programming Interface

Επικοινωνία Διεργασιών στο Internet με POSIX Sockets

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux

Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets

Εργαστήριο Δικτύων Υπολογιστών

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service)

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών

Υποδοχείς (Sockets) Προγραμματισμός II 1

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1

Επίπεδο Μεταφοράς. (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής

2η Προγραµµατιστική Εργασία

Επικοινωνία Client/Server Υποδοχές

Ανάπτυξη και Σχεδίαση Λογισμικού

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

7.4 Πρωτόκολλο UDP. 3. Στη περίπτωση που ένα μήνυμα χωράει σε ένα τμήμα, χρησιμοποιούμε το πρωτόκολλο TCP.

Στρατηγικές Ασφάλειας

{ int pipe(int fd[ ]) close

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

Δίκτυα Η/Υ στην Επιχείρηση

Δικτυακός προγραμματισμός

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1

Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού

HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη

Προγραµµατισµός ικτύων Ε-01

Πρωτόκολλα Διαδικτύου

Λειτουργικά Συστήματα

3.3.2 Το πρωτόκολλο δυναμικής διευθέτησης υπολογιστή DHCP

ιαδικτυακές Εφαρµογές

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

CloudBox!: Ένα εργαλείο cloud αποθήκευσης αρχείων με κατανεμημένο τρόπο

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

Ανάπτυξη και Σχεδίαση Λογισμικού

Δομές δεδομένων (2) Αλγόριθμοι

C: Από τη Θεωρία στην Εφαρμογή

Προγραµµατισµός ικτύων Ε-01

Εργαστήριο Δικτύων Υπολογιστών

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

Πρωτόκολλα Διαδικτύου (ΨΣ-326 DS151)

Προγραμματισμό για ΗΜΥ

Εισαγωγή στον Προγραμματισμό

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Εργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Περιεχόμενα. Πρόλογος... xiii

Φροντιςτήριο. Linked-List

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

1.2.2 Το μοντέλο δικτύωσης TCP/IP 1 / 26

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals

Ανάπτυξη και Σχεδίαση Λογισμικού

Τεχνολογίες ιαδικτύου

Ανάπτυξη και Σχεδίαση Λογισμικού

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΗΜΥ Εργαστηριακή Άσκηση 2

Εισαγωγή στον Προγραμματισμό

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης)

Πρωτόκολλο FTP. Από τα παλαιότερα πρωτόκολλα του ArpaNet Το FTP είναι μια τυποποίηση του TCP/IP Πρόκειται για πρωτόκολο γενικού σκοπού

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. DICOM Επικοινωνία Γενικά

Κεφάλαιο 6ο ΕΠΙΠΕΔΟ ΕΦΑΡΜΟΓΗΣ. Εισαγωγή

Πρωτόκολλα Επικοινωνίας

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Προγραμματισμός Υπολογιστών με C++

Διάλεξη 5: Δείκτες και Συναρτήσεις

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Σκοπιµότητα των firewalls

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

4 η ιάλεξη: Signals UDP Sockets

είκτες και Πίνακες (2)

Η γλώσσα προγραμματισμού C

Προγραμματισμός ΙI (Θ)

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Διδάσκων: Παναγιώτης Ανδρέου

Προγραμματισμός Ι (ΗΥ120)

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Προγραμματισμός Ι (ΗΥ120)

Διδάσκων: Παναγιώτης Ανδρέου

Εισαγωγή στον Προγραμματισμό

Περιεχόμενα. Πρόλογος... 21

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Ανδρέας Παπαζώης. Τμ. Διοίκησης Επιχειρήσεων

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ ΤΟΥΣ

Transcript:

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

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

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

Αναζήτηση Ονόματος Περιοχής #include <netdb.h> 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] Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 4

Η δομή hostent Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 5

Αναζήτηση Ονόματος Περιοχής (2) 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; Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 6

Αναζήτηση Προκαθορισμένης Θύρας #include <netdb.h> 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 <netdb.h> struct servent *getservbyport(int port, const char *protoname); Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 7

Αναζήτηση Προκαθορισμένης Θύρας (2) 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; Η χρήση συναρτήσεων όπως οι παραπάνω, οδηγεί σε μεγαλύτερη μεταφερσιμότητα, λειτουργικότητα και γενικότητα στην πλευρά του πελάτη, αφού είναι εφικτό το πέρασμα παραμέτρων Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 8

Αναζήτηση Πρωτοκόλλου με το όνομα 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 now in pptr ->p_proto */ } else { /* error occurred - handle it */ } Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 9

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

Βιβλιοθήκη Διαδικασιών για Προγράμματα Πελατών /* 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

Βιβλιοθήκη Διαδικασιών για Προγράμματα Πελατών (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