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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Επικοινωνία Διεργασιών στο Internet με POSIX Sockets ΣΤ Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. ΤΕΙ Στερεάς Ελλάδας 2016

2 Δήλωση Οι διαφάνειες βασίζονται στα βιβλία: (1) Δικτυακός, Douglas E. Comer, David L. Stevens, Εκδόσεις ΙΩΝ, 2005 (2) Unix Network Programming, W. Richard Stevens, Prentice-Hall,

3 Δήλωση (συνέχεια) Για τη δημιουργία των διαφανειών χρησιμοποιήθηκε υλικό των μαθημάτων: (1) Κατανεμημένα Συστήματα, Σπύρος Λάλης & Αλέξανδρος Καρυπίδης, ΤΜΗΥΤΔ, Πανεπιστήμιο Θεσσαλίας (2) Εργαστήριο Δικτύων Υπολογιστών, Ε. Βαρβαρίγος & Κ. Βλάχος, ΤΜΗΥΠ, Πανεπιστήμιο Πατρών 2016

4 Στόχοι της ενότητας Η παρουσίαση αρχιτεκτονικών επικοινωνίας διεργασιών σε διαδίκτυο Η παρουσίαση του ΑΡΙ των υποδοχών (POSIX sockets API) για τον προγραμματισμό δικτυακών εφαρμογών Η παρουσίαση βημάτων για την ανάπτυξη πελατών και εξυπηρετητών με χρήση των πρωτοκόλλων TCP και UDP 4

5 Υποδοχές (Sockets) Προγραμματιστική διεπαφή η οποία: παρέχει συναρτήσεις για δημιουργία/καταστροφή υποδοχών. Η υποδοχή θεωρείται το τελικό σημείο (endpoint) της επικοινωνίας σε ένα δίκτυο παρέχει συναρτήσεις για την αίτηση σύνδεσης και την αποδοχή σύνδεσης υποδοχών Παρέχει συναρτήσεις για την αποστολή και λήψη δεδομένων μέσω των υποδοχών Επιχειρεί να αποκρύψει τις λεπτομέρειες της μεταφοράς δεδομένων μέσω του δικτύου 5

6 Υποδοχές 6

7 Υποδοχές και θύρες (ports) 7

8 Υποδοχές και πολύπλεξη 8

9 Επικοινωνία ροής / datagram Επικοινωνία ροής (SOCK_STREAM): αξιόπιστη, με «σύνδεση» (connection oriented) πρωτόκολλο μεταφοράς: TCP Επικοινωνία datagram (SOCK_DGRAM): χωρίς σύνδεση (connectionless) πρωτόκολλο μεταφοράς: UDP (μη αξιόπιστη μεταφορά) χρησιμοποιείται συνήθως σε εφαρμογές που λειτουργούν σε τοπικό δίκτυο ή απαιτούν υψηλές ταχύτητες μετάδοσης χωρίς ανάγκη απόλυτης αξιοπιστίας η όποια αξιοπιστία απαιτείται, επαφίεται στην εφαρμογή 9

10 TCP: Παροχή Αξιόπιστης Υπηρεσίας στις Εφαρμογές Υπηρεσία με Σύνδεση (Connection- Oriented Service) ή Επικοινωνία Ροής (Stream) 2016

11 Κλήσεις συστήματος για εφαρμογή πελάτη εξυπηρετητή στο TCP 11

12 Σύνοψη λειτουργιών και κλήσεων συστήματος 12

13 Κλήσεις συστήματος για εφαρμογή πελάτη-εξυπηρετητή TCP Εξυπηρετητής: δημιουργία υποδοχής (socket()) δέσμευση σε διεύθυνση (bind()) προσδιορισμός μεγέθους ουράς (listen()) αναμονή για σύνδεση (accept()) μεταφορά δεδομένων (read(), write()) Πελάτης: δημιουργία υποδοχής (socket()) σύνδεση με τον εξυπηρετητή (connect()) μεταφορά δεδομένων (write(), read()) 13

14 Η αντίληψη των υποδοχών από τα προγράμματα 14

15 Υλοποίηση Πελάτη TCP 2016

16 Πελάτης TCP Βήματα πελάτη για τη σύνδεση: δημιουργεί μια υποδοχή (ή τελικό σημείο - endpoint) Προαιρετικά: δεσμεύει την υποδοχή στην επιθυμητή τοπική δικτυακή διεύθυνση Συνήθως υπάρχει μόνο μια κάρτα δικτύου / διεύθυνση Γενικά το ΛΣ μπορεί να επιλέγει αυτόματα Υπάρχουν περιπτώσεις που απαιτείται (firewalls) ζητά από το ΛΣ να συνδέσει την υποδοχή με κάποια υποδοχή στη διεύθυνση αποδέκτη (τη διεύθυνση αποδέκτη την παρέχει ο πελάτης) 16

17 Δομές για Ονόματα και Διευθύνσεις IPv4 και IPv6 2016

18 Δομές για την αποθήκευση τελικού σημείου στο Internet IPv4 struct sockaddr { unsigned short sa_family; // address family char sa_data[14]; // 14 bytes of protocol address }; sa_family: AF_INET (IPv4) ή AF_INET6 (IPv6) sa_data: περιέχει τη διεύθυνση και τη θύρα προορισμού 18

19 Δομές για την αποθήκευση τελικού σημείου στο Internet ΙPv4 struct sockaddr_in {//struct to hold an address }; u_short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; sin_family: sa_family // type of address // protocol port number // IPv4 address // unused (set to zero) sin_port: ο αριθμός θύρας σε network byte order (δες παρακάτω) sin_addr: η διεύθυνση ΙΡv4 του τελικού σημείου sin_zero: πρέπει να είναι 0 (με τη συνάρτηση memset()) 19

20 Δομές για την αποθήκευση τελικού σημείου στο Internet ΙPv4 struct in_addr { // IPv4 Internet address }; uint32_t s_addr; // Α 32-bit int (4 bytes) Το πεδίο της δομής sockaddr_in που περιέχει τη διεύθυνση ΙΡ είναι τύπου in_addr. Άρα, αν σε ένα πρόγραμμα υπάρχει η ακόλουθη δήλωση: struct sockaddr_in address; Μπορούμε να αναφερθούμε στην ΙΡv4 διεύθυνση με τον παρακάτω τρόπο: address.sin_addr.s_addr /* διεύθυνση IPv4 σε Network Byte Order */ 20

21 Δομές για την αποθήκευση τελικού σημείου στο Internet ΙPv6 // (IPv6 only) struct sockaddr_in6 { }; u_int16_t sin6_family; // address family, AF_INET6 u_int16_t sin6_port; Byte Order u_int32_t sin6_flowinfo; information // port number, Network 21 // IPv6 flow struct in6_addr sin6_addr; // IPv6 address u_int32_t sin6_scope_id; struct in6_addr { }; // Scope ID unsigned char s6_addr[16]; // IPv6 address

22 Δομές για την αποθήκευση τελικού σημείου στο Internet ΙPv6 Υπάρχουν κλήσεις για τις οποίες δεν γνωρίζουμε εκ των προτέρων αν επιστρέφουν διευθύνσεις IPv4 ή IPv6 Σε αυτές τις κλήσεις περνάμε τη δομή struct sockaddr_storage που είναι αρκετά μεγάλη ώστε να χωράει τόσο δομές IPv4 όσο και IPv6 Η δομή αυτή είναι παρόμοια με τη struct sockadrr αλλά μεγαλύτερη 22

23 Δομές για την αποθήκευση τελικού σημείου στο Internet ΙPv4 και 6 struct sockaddr_storage { sa_family_t ss_family; // address family /* all this is padding, implementation specific, ignore it: */ }; char ss_pad1[_ss_pad1size]; int64_t ss_align; char ss_pad2[_ss_pad2size]; Τρόπος χρήσης: ελέγχουμε το πεδίο ss_family (αν είναι AF_INET ή AF_INET6) και ανάλογα μετατρέπουμε (type cast) αυτή τη δομή σε struct sockaddr_in ή struct sockaddr_in6 23

24 Δομή δεδομένων για τήρηση διευθύνσεων ΙΡ IPv4 sockaddr_in length AF_INET αριθμός θύρας (16bit) διεύθυνση ΙΡ (32 bit) IPv6 sockaddr_in6 length AF_INET6 αριθμός θύρας (16bit) ετικέτα ροής (32 bit) (unused) διεύθυνση ΙΡv6 (128 bit) μέγεθος: 16 bytes 24 μέγεθος: 24 bytes

25 Δομή για την αποθήκευση τελικού σημείου στο Internet ΙPv6 struct addrinfo { }; int ai_flags; // AI_PASSIVE, AI_CANONNAME, etc. int ai_family;// AF_INET, AF_INET6, AF_UNSPEC int ai_socktype; // SOCK_STREAM, SOCK_DGRAM int ai_protocol; // use 0 for "any«size_t ai_addrlen;// size of ai_addr in bytes struct sockaddr *ai_addr;// sockaddr_in or _in6 char *ai_canonname; // full canonical hostname struct addrinfo *ai_next;//linked list, next node 25

26 Δομή για την αποθήκευση τελικού σημείου στο Internet ΙPv6 Μπορείτε να εξαναγκάσετε να χρησιμοποιήσει IPv4 ή IPv6 στο πεδίο ai_family, ή να το αφήσετε AF_UNSPEC Ο κώδικάς σας έτσι είναι IP version-agnostic Η δομή αυτή είναι μια συνδεδεμένη λίστα: το ai_next δείχνει στο επόμενο στοιχείο (μπορεί να υπάρχουν πολλά αποτελέσματα και να χρειάζεται κανείς να διαλέξει) 26

27 Κλήσεις Συστήματος Υποδοχών 2016

28 Δημιουργία υποδοχής int socket ( family, type, protocol ); family int type int protocol int Οικογένεια πρωτοκόλλων ή διευθύνσεων (PF_INET για TCP/IP) Τύπος υπηρεσίας (SOCK_STREAM για TCP ή SOCK_DGRAM για UDP) Αριθμός πρωτοκόλλου που θα χρησιμοποιηθεί ή 0 για χρήση του καθορισμένου πρωτοκόλλου για συγκεκριμένο family και type 28

29 Δημιουργία υποδοχής TCP int main(int argc, char *argv[]) { int sock, ret; sock = socket (PF_INET, SOCK_STREAM, 0); if (sock == -1) { // error check perror ("Failed to create socket"); return -1; } } PF_INET: Protocol Family Internet, SOCK_STREAM: Υποδοχή TCP. Επιστρέφει έναν ακέραιο (sock) που είναι ο περιγραφέας της υποδοχής (socket descriptor) 29

30 BSD Socket Πρόκειται για Δομή δεδομένων σε kernel space 30

31 Σύνδεση με τον εξυπηρετητή Ι int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen); sockfd int serv_addr &sock_addr addrlen int Ο τοπικός περιγραφέας υποδοχής που θα συνδεθεί Η διεύθυνση τελικού σημείου του εξυπηρετητή με την οποία θα συνδεθεί ο περιγραφέας Το μέγεθος (σε bytes) της διεύθυνσης 31

32 Σύνδεση με τον εξυπηρετητή ΙΙ struct sockaddr_in address; address.sin_family = AF_INET; address.sin_addr.s_addr = htonl(inaddr_loopback); address.sin_port = htons(15000); ret = connect (sock, (struct sockaddr *) &address, sizeof(address)); Σύνδεση με τη διεργασία εξυπηρετητή που βρίσκεται στη διεύθυνση address 32

33 Δημιουργία σύνδεσης (κλήσεις συστήματος) socket() connect() (μπλοκάρει) client server socket(), bind(), listen(), accept() (μπλοκάρει) επιστρέφει η connect() αποστολή αίτησης χρόνος 33 χρόνος επιστρέφει η accept() ανάγνωση δεδομένων αποστολή απόκρισης

34 Κλήσεις Συστήματος για Ονόματα και Διευθύνσεις IPv4 και IPv6 2016

35 Πως βρίσκουμε τη διεύθυνση ΙΡv4 του εξυπηρετητή; struct hostent { }; char *h_name; /* Official name of host.*/ char **h_aliases; /* Alias list. */ int h_addrtype; /* Host address type. */ int h_length; /* Length of address. */ char **h_addr_list; /* List of addresses from name server. */ # define h_addr h_addr_list[0]; #include <netdb.h> struct hostent *gethostbyname(const char *hostname); 35

36 Η δομή hostent 36

37 Ανάλυση (resolve) ενός ονόματος με τη gethostbyname() I struct hostent *phe; /* pointer to host information entry (IPv4 only) */ char *host; struct sockaddr_in address; if ( phe = gethostbyname(host) ) memcpy(&address.sin_addr, phe->h_addr, phe-> h_length); else if ( (sin.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE ) errexit("can't get \"%s\" host entry\n", host); 37

38 Ανάλυση (resolve) ενός ονόματος με τη gethostbyname() II 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; 38

39 Πως βρίσκουμε τον αριθμό θύρας που ακούει ο εξυπηρετητής; 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 */ όπου: s_name το επίσημο όνομα της υπηρεσίας (π.χ. daytime), s_port ο αριθμός θύρας για την υπηρεσία στη διάταξη των bytes στο δίκτυο (δες παρακάτω) και s_proto το όνομα του πρωτοκόλλου που θα χρησιμοποιηθεί για αυτή την υπηρεσία 39

40 Αναζήτηση προκαθορισμένης θύρας #include <netdb.h> struct servent *getservbyname(const char *servname, const char *protoname); #include <netdb.h> struct servent *getservbyport(int port, const char *protoname); 40

41 Αναζήτηση προκαθορισμένης θύρας με τη getservbyname() I 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; Η χρήση συναρτήσεων όπως οι παραπάνω, οδηγεί σε μεγαλύτερη μεταφερσιμότητα, λειτουργικότητα και γενικότητα στην πλευρά του πελάτη, αφού είναι εφικτό το πέρασμα παραμέτρων. Λειτουργούν μόνο για IPv4 41

42 Αναζήτηση προκαθορισμένης θύρας με τη getservbyname() II struct servent *pse; /* pointer to service information entry */ char *service, *transport; struct sockaddr_in address; if ( pse = getservbyname(service, transport) ) address.sin_port = pse->s_port; else if ((sin.sin_port = htons((unsigned short)atoi(service))) == 0) errexit("can't get \"%s\" service entry\n", service); 42

43 Δημιουργία τελικού σημείου με την getaddrinfo() I #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> int getaddrinfo( const char *node,// e.g. " or IP const char *service, // e.g. "http" or port number const struct addrinfo *hints, struct addrinfo **res ); 43

44 Δημιουργία τελικού σημείου με την getaddrinfo() IΙ Η getaddrinfo() παίρνει τρεις παραμέτρους: την παράμετρο node, που είναι το όνομα του ΥΣ ή μια διεύθυνση ΙΡ την παράμετρο service, που είναι το όνομα μιας υπηρεσίας (σύμφωνα με την ΙΑΝΑ) ή ο αριθμός θύρας της υπηρεσίας την παράμετρο hints, που «δείχνει» σε ένα struct addrinfo που έχετε ήδη γεμίσει με τις απαραίτητες πληροφορίες 44

45 Παράδειγμα κλήσης της getaddrinfo() int status; struct addrinfo hints; struct addrinfo *servinfo; /* will point to the results */ memset(&hints, 0, sizeof hints); /* make sure the struct is empty */ hints.ai_family = AF_UNSPEC;// don't care IPv4 or IPv6 hints.ai_socktype = SOCK_STREAM; // TCP stream sockets // get ready to connect status = getaddrinfo(" "3490", &hints, &servinfo); /* servinfo now points to a linked list of 1 or more struct addrinfos */ 45

46 Μετατροπή μεταξύ διαφόρων μορφών διευθύνσεων IPv4 Ι #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> char *inet_ntoa(struct in_addr in); int inet_aton(const char *cp, struct in_addr *inp); in_addr_t inet_addr(const char *cp); 46

47 Μετατροπή μεταξύ διαφόρων μορφών διευθύνσεων IPv4 ΙΙ Οι συναρτήσεις αυτές μετατρέπουν από struct in_addr σε δεκαδικό συμβολισμό με τελείες (inet_ntoa) και αντίστροφα (inet_aton) n = network, a = ASCII (για ιστορικούς λόγους). Οι λειτουργίες και τα ορίσματα είναι προφανή Η συνάρτηση inet_addr() είναι παλαιότερη και κάνει ότι και η inet_aton() Οι συναρτήσεις αυτές έχουν αντικατασταθεί από τις inet_pton() και inet_ntop() 47

48 Μετατροπή μεταξύ διαφόρων μορφών διευθύνσεων IPv6 Ι #include <arpa/inet.h> const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); int inet_pton(int af, const char *src, void *dst); n = network, p = presentation ή printable Και οι δύο παίρνουν την οικογένεια διευθύνσεων στην παράμετρο af (AF_INET ή AF_INET6) Στην inet_ntop() η παράμετρος src θα πρέπει να είναι ένα δείκτης είτε σε struct in_addr ή σε struct in6_addr που θα περιέχουν τη διεύθυνση που πρέπει να μετατραπεί σε συμβολοσειρά 48

49 Αναπαράσταση διευθύνσεων IPv6 Στην inet_pton() η παράμετρος src είναι μια συμβολοσειρά που περιέχει τη διεύθυνση ΙΡ σε εκτυπώσιμη μορφή Η παράμετρος dst δείχνει που θα αποθηκευθεί το αποτέλεσμα, που θα είναι struct in_addr ή struct in6_addr Προφανώς και στις δύο συναρτήσεις χρειάζεται κατάλληλη μετατροπή τύπων όπου η παράμετρος είναι τύπου void * 49

50 Διάταξη των bytes στο Δίκτυο (Network byte Ordering) 2016

51 Μορφή big-endian και little-endian Οι μορφές αυτές περιγράφουν τη διάταξη των bytes (byte order) στη μνήμη του υπολογιστή αλλά κατά τη μετάδοση πάνω από κύκλωμα Τα bytes μπορεί να αναπαρίστανται στη μνήμη με μορφή big-endian ή little-endian Στη μορφή big-endian το πιο σημαντικό byte μιας «λέξης» αποθηκεύεται σε μια θέση μνήμης και τα ακόλουθα στις επόμενες μεγαλύτερες θέσεις μνήμης 51

52 Μορφή big-endian και little-endian Στη μορφή little-endian αντιστρέφεται η σειρά και αποθηκεύεται το λιγότερο σημαντικό byte στη χαμηλότερη θέση μνήμης ενώ το πιο σημαντικό byte αποθηκεύεται στη μεγαλύτερη θέση μνήμης Γιατί όμως μας απασχολεί κάτι τέτοιο; 52

53 Little endian vs big endian Έστω η ανάθεση: int a = 1 και έστω ότι sizeof(int) = 2 bytes περισσότερο σημαντικό byte λιγότερο σημαντικό byte

54 Little endian vs big endian int a=1; Λιγότερο σημαντικό byte Περισσότερο σημαντικό byte little endian int a=1; big endian

55 Μορφή big-endian και little-endian Η μεταβλητή x με τιμή 0x θα αποθηκευθεί όπως φαίνεται παρακάτω: 55

56 Διάταξη των bytes στο δίκτυο Υποθέστε ότι γράφετε ακεραίους σε ένα αρχείο σε ένα υπολογιστικό σύστημα (ΥΣ) little endian και στη συνέχεια μεταφέρετε αυτό το αρχείο σε ένα ΥΣ big endian Αν δεν υπάρχει μετασχηματισμός από little endian σε big endian, το ΥΣ που λειτουργεί με big endian θα διαβάσει διαφορετικούς ακεραίους από το αρχείο! 56

57 Διάταξη των bytes στο δίκτυο και το υπολογιστικό σύστημα Το TCP/IP αναπαριστά τους ακέραιους που χρησιμοποιούνται στις επικεφαλίδες των πρωτοκόλλων με πρώτο το πιο σημαντικό byte (network byte order) Δηλαδή, τα πεδία περιγράφονται από αριστερά προς τα δεξιά, με το πιο σημαντικό byte αριστερά, και το λιγότερο σημαντικό byte δεξιά H χρήση κατάλληλων ρουτινών μετατροπής κάνει τον κώδικα μεταφέρσιμο (ανεξάρτητα από τη διάταξη των bytes στο τοπικό ΥΣ) 57

58 Επεξεργαστές και αναπαράσταση Οι Intel-based επεξεργαστές είναι little endians. Οι επεξεργαστές ARM ήταν little endians Η τρέχουσα γενιά επεξεργαστών ARM είναι bi-endian Οι επεξεργαστές Motorola 68K είναι big endians. Οι επεξεργαστές PowerPC (από τη Motorola) και οι SPARK (από τη Sun) είναι big endian Οι τρέχουσες εκδόσεις αυτών των επεξεργαστών είναι bi-endians 58

59 Διάταξη των bytes στο δίκτυο και το υπολογιστικό σύστημα #include <netinet.h> uint16_t htons(uint16_t hostshort) Μετατροπή από τη διάταξη των bytes στο ΥΣ (h: host) στη διάταξη των bytes του δικτύου (n: network) για μικρούς ακεραίους (s: short int 16 bit). Αντίστοιχα, οι παρακάτω συναρτήσεις κάνουν μετατροπές για s και l (l: int 32 bit) uint32_t htonl(uint32_t hostlong) uint16_t ntohs(uint16_t netshort) uint32_t ntohl(uint32_t netlong) 59

60 Παράδειγμα κώδικα πελάτη TCP I #include<stdio.h> #include<string.h> //strlen #include<sys/socket.h> #include<arpa/inet.h> //inet_addr int main(int argc, char *argv[]) { int socket_desc; struct sockaddr_in server; 60

61 Παράδειγμα κώδικα πελάτη TCP II char *message, server_reply[2000]; //Create socket socket_desc = socket(af_inet, SOCK_STREAM, 0); if (socket_desc == -1) { } printf("could not create socket"); 61

62 Παράδειγμα κώδικα πελάτη TCP III server.sin_addr.s_addr = inet_addr(" "); server.sin_family = AF_INET; server.sin_port = htons( 80 ); //Connect to remote server if (connect(socket_desc, (struct sockaddr *)&server, sizeof(server)) < 0) { puts("connect error"); return 1; } 62

63 Παράδειγμα κώδικα πελάτη TCP IV puts("connected\n"); //Send some data message = "GET / HTTP/1.1\r\n\r\n"; if( send(socket_desc, message, strlen(message), 0) < 0) { } puts("send failed"); return 1; 63

64 Παράδειγμα κώδικα πελάτη TCP V puts("data Send\n"); //Receive a reply from the server if( recv(socket_desc, server_reply, 2000, 0) < 0) { } } puts("recv failed"); puts("reply received\n"); puts(server_reply); return 0; 64

65 Υλοποίηση Εξυπηρετητή TCP 2016

66 Εξυπηρετητής TCP Βήματα εξυπηρετητή για τη σύνδεση: δημιουργεί μια υποδοχή δεσμεύει την υποδοχή στην επιθυμητή τοπική δικτυακή διεύθυνση τελικού σημείου ζητά από το ΛΣ να ακούει για συνδέσεις εισέρχεται σε κατάσταση όπου αναμένει διαρκώς (σύγχρονα ή ασύγχρονα) να του παραδώσει μια σύνδεση το ΛΣ 66

67 Δημιουργία υποδοχής TCP int main(int argc, char *argv[]) { int serversocket; serversocket = socket (PF_INET, SOCK_STREAM, 0); if (serversocket == -1) { // error check perror ("Failed to create socket"); return -1; } } PF_INET: Protocol Family Internet, SOCK_STREAM: Υποδοχή TCP 67

68 Δέσμευση της υποδοχής σε τελικό σημείο Πρέπει να ορίσουμε τη διεύθυνση στην οποία θα αναμένουμε συνδέσεις Στο TCP/IP το ουσιαστικό ζητούμενο είναι η δημιουργία τελικού σημείου επικοινωνίας (endpoint) που αποτελείται από διεύθυνση ΙΡ και αριθμό θύρας πρωτοκόλλου Οι πελάτες πρέπει να γνωρίζουν τη διεύθυνση αυτή για να μπορέσουν να συνδεθούν Το ΛΣ δεν επιτρέπει σε άλλο πρόγραμμα να δεσμεύσει τη διεύθυνση αυτή 68

69 Διεύθυνση αναμονής σύνδεσης struct sockaddr_in address; address.sin_family = AF_INET; address.sin_addr.s_addr = htonl (INADDR_ANY); address.sin_port = htons (15000); Δημιουργία Τελικού Σημείου Εξυπηρετητή sin_family: πρέπει να είναι αντίστοιχο του socket family sin_addr: ακέραιος 32bit. Αντιστοιχεί σε ένα μοναδικό μηχάνημα sin_port: ακέραιος 16bit. Αντιστοιχεί σε ένα μοναδικό πρόγραμμα στον εξυπηρετητή 69

70 Δέσμευση υποδοχής στη διεύθυνση αναμονής (bind()) int bind ( socket, localaddr, addrlen ); socket int localaddr &sockaddr addrlen int Περιγραφέας υποδοχής που δημιουργείται από τη socket() Η διεύθυνση μιας δομής που προσδιορίζει μια διεύθυνση IP και τον αριθμό θύρας πρωτοκόλλου Μέγεθος του δεύτερου ορίσματος σε bytes 70

71 bind() ret = bind (serversocket, (struct sockaddr *) &address, sizeof (address)); if (ret == -1) { // error check } perror ("Failed to bind socket"); return -1; Δέσμευση Υποδοχής σε Τοπική Διεύθυνση 71

72 Τοποθέτηση σε παθητική κατάσταση int listen( socket, queuelen ); socket int Ένας περιγραφέας υποδοχής που έχει δημιουργηθεί από την κλήση socket() queuelen int Το μέγεθος της ουράς των εισερχόμενων αιτήσεων σύνδεσης (εξ ορισμού 5) 72

73 listen() ret = listen (serversocket, 10); if (ret == -1) { // error check } perror ("Failed to start listening on socket"); return -1; Τοποθέτηση υποδοχής εξυπηρετητή σε παθητική κατάσταση (δηλ. κατάσταση αναμονής αιτήσεων μέσω της υποδοχής, με μέγιστο μέγεθος ουράς 10 αιτήσεις) 73

74 Αποδοχή αίτησης για σύνδεση: accept() I int accept( int s, struct sockaddr *addr, socklen_t *addrlen ); Η accept() δέχεται ως ορίσματα: την υποδοχή που αναμένει για αιτήσεις σύνδεσης μια δομή διεύθυνσης που συμπληρώνει με τα στοιχεία του πελάτη τη διεύθυνση ακεραίου (socklen_t) που: αρχικά έχει το μέγεθος της δομής διεύθυνσης στην επιστροφή έχει το μέγεθος που χρησιμοποιήθηκε 74

75 Αποδοχή αίτησης για σύνδεση: accept() II int accept(int s, struct sockaddr *addr, socklen_t *addrlen); Επιστρέφει μια νέα υποδοχή! Η αρχική συνεχίζει να χρησιμοποιείται για την αναμονή αιτήσεων και τη δημιουργία συνδέσεων Η νέα χρησιμοποιείται για την ανταλλαγή δεδομένων για τη συγκεκριμένη σύνδεση 75

76 Ενημέρωση για τη διεύθυνση του αποστολέα struct sockaddr_in remoteaddress; int addresslength, clientsocket; addresslength = sizeof (remoteaddress); clientsocket = accept (serversocket, (struct sockaddr *) &remoteaddress, &addresslength); if (clientsocket == -1) { // error check perror ("Error while accepting connection"); return -1; } printf ("Connection has been established\n"); Παραδίδεται η πρώτη αίτηση σύνδεσης από την ουρά. Η δομή remoteaddress και η addresslength περιέχουν τη διεύθυνση τελικού σημείου του πελάτη 76

77 Αποδοχή αίτησης για σύνδεση: accept() ΙII Από την στιγμή που η accept() επιστρέφει τη νέα υποδοχή, η σύνδεση µε τον πελάτη έχει εγκατασταθεί Μέχρι να ξανακληθεί η accept(), o εξυπηρετητής δεν ικανοποιεί αιτήσεις Οι αιτήσεις που φτάνουν όσο ο εξυπηρετητής δεν βρίσκεται στην accept() τοποθετούνται σε μια ουρά (εξορισμού μεγέθους 5 μπορεί να αλλάξει µε την listen()) 77

78 Αποδοχή αίτησης για σύνδεση: accept() ΙV Ένας τρόπος επεξεργασίας της αίτησης είναι η δημιουργία διεργασιών ή νημάτων, που είναι παιδιά της αρχικής διεργασίας του εξυπηρετητή Με τον τρόπο αυτό ο πελάτης επικοινωνεί µε έναν «αφοσιωµένο» σε αυτόν τμήμα του εξυπηρετητή Ο «αρχικός» εξυπηρετητής επιστρέφει για να συνεχίσει να αναμένει για νέες αιτήσεις σύνδεσης (επιστροφή στην accept()) 78

79 Δημιουργία σύνδεσης (κλήσεις συστήματος) socket() connect() (μπλοκάρει) client server socket(), bind(), listen(), accept() (μπλοκάρει) επιστρέφει η connect() αποστολή αίτησης χρόνος 79 χρόνος επιστρέφει η accept() ανάγνωση αίτησης αποστολή απόκρισης

80 Αποστολή και Λήψη Δεδομένων σε Υποδοχές TCP 2016

81 Αποστολή και λήψη δεδομένων σε υποδοχές TCP Γίνεται όπως η ανάγνωση/εγγραφή σε αρχεία με χρήση των συναρτήσεων Ε/Ε: read()/write() Επίσης, μπορούν να χρησιμοποιηθούν οι συναρτήσεις: send()/recv() Η λειτουργικότητα είναι αντίστοιχη 81

82 Ενδιάμεση αποθήκευση (TCP Buffers) Το ΛΣ παρέχει μια περιοχή ενδιάμεσης αποθήκευσης (TCP buffer) Τα πακέτα, με την άφιξή τους τοποθετούνται στον TCP buffer Η read() παραδίδει τα δεδομένα στη διεργασία Ανάλογη λειτουργικότητα με την listen() και την ουρά εισερχόμενων συνδέσεων 82

83 send() / recv() count = send(sock, buf, buflen, flags) int count, sock, buflen, flags; char *buf; count = recv(sock, buf, buflen, flags) int count, sock, buflen, flags; char *buf; 83

84 Αξιόπιστη υπηρεσία Η send() μπλοκάρει αν ο παραλήπτης δεν μπορεί να λάβει τα δεδομένα με το ρυθμό που στέλνονται (έλεγχος ροής) Ο buffer του ΛΣ χρησιμοποιείται για την παράδοση των δεδομένων στην εφαρμογή με τη σειρά που εστάλησαν Ο buffer έχει κάθε φορά συγκεκριμένο παράθυρο λήψης (έλεγχος ροής) 84

85 Ανάγνωση από σύνδεση TCP Το TCP κατά την παραλαβή δε διατηρεί την ομαδοποίηση με την οποία εστάλησαν τα δεδομένα (πρωτόκολλο ροής χαρακτήρων) Κάθε πρόγραμμα που διαβάζει δεδομένα από μια σύνδεση TCP πρέπει να είναι έτοιμο να δεχθεί τα δεδομένα σε διαφορετικά τμήματα από αυτά που εστάλησαν Γενικά, το πλήθος των αναγνώσεων μπορεί να μην είναι ίσο με το πλήθος των εγγραφών 85

86 Κώδικας ανταλλαγής δεδομένων σε σύνδεση TCP I /* Example code segment */ #define BLEN 120 /*Buffer length to use*/ char *req = "request of some sort"; char buf [BLEN] ; /*Buffer for answer*/ char *bptr; /* Pointer to Buffer*/ int n; /*Number of bytes read*/ int buflen; /*space left in buffer*/ bptr = buf; buflen= BLEN; 86

87 Κώδικας ανταλλαγής δεδομένων σε σύνδεση TCP II /*Send request*/ send(s, req, strlen(req), 0); /*Read response (may come in many pieces)*/ while ((n=recv(s, bptr, buflen, 0)>0) { bptr += n; buflen-=n; } 87

88 Ανάγνωση με διακοπές Η ανάγνωση μπορεί να γίνεται με διακοπές: λόγω άφιξης σήματος επειδή η υποδοχή ορίστηκε O_NONBLOCK η μεταβλητή errno σε αυτή την περίπτωση λαμβάνει τιμή EINTR ή EAGAIN αντίστοιχα Ο κώδικας θα πρέπει να είναι γραμμένος έτσι ώστε να διαχωρίζει αυτές τις περιπτώσεις από περιπτώσεις λαθών 88

89 Τερματισμός σύνδεσης Όταν τα προγράμματα τελειώσουν την ανταλλαγή δεδομένων, πρέπει να τερματίζουν τη σύνδεση (απελευθέρωση περιγραφέα, δομών δεδομένων για την υποδοχή, buffer ΛΣ) Το ΛΣ: ενημερώνει με ειδικά πακέτα (FIN) το άλλο άκρο ώστε να γνωρίζει ότι πλέον η σύνδεση είναι άκυρη απελευθερώνει τους πόρους που υποστηρίζουν τη λειτουργία της σύνδεσης 89

90 close() int close(int sock); Ίδια ακριβώς χρήση και στα δυο άκρα Δεδομένα που έχει στείλει το άλλο πρόγραμμα πριν κλείσει τη σύνδεση, παραδίδονται από την ενδιάμεση αποθήκευση του ΛΣ Μετά από μια κλήση στην close() ο περιγραφέας υποδοχής αχρηστεύεται 90

91 Μερικός τερματισμός shutdown() int shutdown ( sock, direction ); Ο πελάτης δηλώνει ότι δε θα μεταφέρει δεδομένα (προς κάποια κατεύθυνση) και δεν αποδεσμεύει την υποδοχή Η εφαρμογή εξυπηρετητή λαμβάνει ένα σήμα end-of-file Ο εξυπηρετητής θα κλείσει τη σύνδεση μετά την τελευταία απόκριση Ιδιαίτερα χρήσιμο για πρωτόκολλα που ανταλλάσσουν αυθαίρετα μεγάλες ποσότητες δεδομένων 91

92 Επικοινωνία διεργασιών με χρήση UDP Υπηρεσία Χωρίς Σύνδεση (Connectionless Service) ή Επικοινωνία Δεδομενογραφημάτων (Datagram) 2016

93 Αλληλεπίδραση πελάτη εξυπηρετητή στο UDP 93

94 Σύνοψη λειτουργιών και κλήσεων συστήματος 94

95 Κλήσεις συστήματος για επικοινωνία υποδοχών UDP Εξυπηρετητής: δημιουργία τελικού σημείου (socket()) δέσμευση διεύθυνσης (bind(), όπως στο TCP) ανταλλαγή δεδομένων (sendto(), recvfrom()) Πελάτης: δημιουργία τελικού σημείου (socket()) ανταλλαγή δεδομένων (sendto(), recvfrom()) 95

96 Χαρακτηριστικά του UDP Χωρίς σύνδεση (datagram-based) πιθανή άφιξη των πακέτων με διαφορετική σειρά η παράδοση των δεδομένων στον παραλήπτη δεν είναι εγγυημένη Χωρίς έλεγχο ροής Αποθήκευση ολόκληρων πακέτων (δεν είναι εφικτή η ανάγνωση μέρους του πακέτου) Μέγιστο μέγεθος πακέτου τα 64ΚΒ (επικεφαλίδα + φορτίο (payload)) 96

97 Επικοινωνία χωρίς σύνδεση Μέσα από την ίδια υποδοχή UDP ένα πρόγραμμα μπορεί: να στείλει πακέτα σε οποιοδήποτε άλλο πρόγραμμα στο Internet να λάβει πακέτα από οποιοδήποτε άλλο πρόγραμμα στο Internet Συγκρίνετε με το TCP όπου: οι υποδοχές συνδέονται σε ζεύγη ανταλλαγή δεδομένων υπάρχει μόνο μεταξύ συνδεδεμένων ζευγών 97

98 Χώρος θυρών TCP και UDP Η επικεφαλίδα του ΙΡ περιέχει το πρωτόκολλο επιπέδου μεταφοράς για το οποίο προορίζεται ένα πακέτο Οι χώροι διευθύνσεων τελικού σημείου (θύρες) UDP και TCP είναι διαφορετικοί (μια υποδοχή TCP με αριθμό θύρας Χ μπορεί να συνυπάρχει στο ίδιο σύστημα με μια υποδοχή UDP με αριθμό θύρας Χ) Τα πακέτα TCP με αριθμό θύρας Χ θα παραδοθούν σε διαφορετική διεργασία από τα πακέτα UDP με αριθμό θύρας X 98

99 Δημιουργία πακέτων Σχηματισμός πακέτων: Στο TCP γίνεται από το ΛΣ διαδοχικές send() μπορεί να ενωθούν στο ίδιο πακέτο μεγάλες send() μπορεί να σπάσουν σε > 1 πακέτα Στο UDP ελέγχεται από τον προγραμματιστή κάθε sendto() μπαίνει σε ένα πακέτο κλήση στη sendto() με δεδομένα > 64K επιστρέφει λάθος 99

100 Ανάγνωση δεδομένων Ι Ο τρόπος δημιουργίας πακέτων επηρεάζει τον τρόπο ανάγνωσης δεδομένων: Στο TCP: η recv() λειτουργεί πάνω σε μια ροή (stream) εισερχόμενων bytes της ενδιάμεσης αποθήκευσης του ΛΣ, που δεν έχει καμιά σχέση με τη δημιουργία πακέτων 100

101 Ανάγνωση δεδομένων ΙΙ Στο UDP: κάθε recvfrom() παραλαμβάνει ακριβώς ένα πακέτο αν στην recvfrom() δεν υπάρχει αρκετός χώρος στο σημείο όπου τοποθετούνται τα εισερχόμενα δεδομένα, τα bytes του πακέτου αποκόπτονται 101

102 Δημιουργία υποδοχής UDP int main(int argc, char *argv[]) { int sock; sock = socket (PF_INET, SOCK_DGRAM, 0); if (sock == -1) { // error check perror ("Failed to create socket"); return -1; } } PF_INET: Protocol Family Internet, SOCK_DGRAM: Υποδοχή UDP. Επιστρέφει έναν ακέραιο (sock) που είναι ο περιγραφέας της υποδοχής (socket descriptor) 102

103 Αποστολή και λήψη δεδομένων int sendto(sock, buf, buflen, flags, to, tolen) int sock, buflen, flags, tolen; char *buf; struct sockaddr *to; int recvfrom(sock, buf, buflen, flags, from, fromlen) int sock, buflen, flags, *fromlen; char *buf; struct sockaddr *from; 103

104 sendto() sock int Ένας περιγραφέας υποδοχής buff &char Ένας δείκτης στο μήνυμα buflen int flags int Bits ελέγχου to Το μέγεθος του μηνύματος σε bytes &sockaddr Δείκτης στη δομή της διεύθυνσης tolen int Το μέγεθος της διεύθυνσης 104

105 recvfrom() sock int Ένας περιγραφέας υποδοχής buff &char Η προσωρινή μνήμη που θα μπει το μήνυμα buflen int Μέγεθος της προσωρινής μνήμης flags int Bits ελέγχου from &sockaddr Θα τοποθετηθεί η διεύθυνση του αποστολέα fromlen &int Επιστρέφει το μέγεθος του from 105

106 Παράδειγμα UDP time server struct sock_addr_in fsin; unsigned int alen; time_t now; while (1) { } alen = sizeof(fsin); if (recvfrom(sock, buf, sizeof(buf), 0, (struct sockaddr *)&fsin, &alen) < 0) errexit("recvfrom: %s\n", strerror(errno)); time(&now); now = htonl((unsigned long)(now + UNIXEPOCH)); sendto(sock, (char *)&now, sizeof(now), 0, (struct sockaddr *)&fsin, sizeof(fsin)); 106

107 connect() Εφόσον αποστέλλουμε συνεχώς σε συγκεκριμένο παραλήπτη μπορούμε να χρησιμοποιήσουμε την connect() Η connect() στο UDP δε δημιουργεί σύνδεση Για δική μας ευκολία, η υποδοχή έχει έναν προκαθορισμένο αποδέκτη (μπορεί πλέον να χρησιμοποιείται η send()) Μπορεί κανείς να στείλει και σε άλλους αποδέκτες καλώντας την sendto() αντί για την send() 107

108 Παράδειγμα int main(int argc, char *argv[]) { int sock, ret; struct sockaddr_in recvadr; recvadr.sin_family = AF_INET; inet_aton ( , &recvadr.sin_addr); recvadr.sin_port = htons (15000); connect (sock, &recvadr, sizeof (recvadr)); send (sock, data, DATASIZE, 0); send (sock, moredata, DATASIZE, 0); } Αφού χρησιμοποιηθεί η connect() δεν απαιτείται ο προσδιορισμός παραλήπτη στη send() 108

109 Προχωρημένα Θέματα Επικοινωνίας Διεργασιών 2016

110 Σήματα (Signals) Signal id default SIGKILL 9 Terminate SIGALRM 14 Terminate SIGSYS 12 Core SIGCHLD 20 Ignore 110

111 Σήματα Μπορούμε να καθορίσουμε επακριβώς την συμπεριφορά μίας διεργασίας, ύστερα από την λήψη ενός σήματος εκτέλεση μίας συνάρτησης (signal handler) καμία ενέργεια (SIG_IGN) προκαθορισμένη συμπεριφορά (SIG_DFL) Τα σήματα SIGKILL και SIGSTOP δεν μπορούν ούτε να αγνοηθούν ούτε να «πιαστούν» από μία συνάρτηση (signal handler) 111

112 Χειρισμός κλήσεων συστήματος που διακόπτονται Όταν μια κλήση συστήματος που μπλοκάρει (π.χ. accept()) διακοπεί από ένα σήμα, μετά την επιστροφή από το χειριστή σήματος η κλήση συστήματος θέτει τη μεταβλητή errno ίση με EINTR Ο πυρήνας δεν είναι βέβαιο ότι θα επανεκιννήσει την κλήση συστήματος Θα πρέπει ο προγραμματιστής να φροντίζει για την επανεκκίνηση της κλήσης συστήματος 112

113 Χειρισμός κλήσεων συστήματος που διακόπτονται for ( ; ; ) { clilen = sizeof(cliaddr); if ((connfd = accept(listenfd, (sockaddr *)&cliaddr, &clilen)) < 0) { } if (errno == EINTR) continue; else perror( accept error ); 113

114 Βιβλιογραφία BSD Sockets: cis307s96/readings/docs/sockets.html Socket Guide by GNU: manual/html_node/sockets.html#sockets Beej's Guide to Network Programming Using Internet Sockets: multipage/index.html οδηγός για το TCP/IP: 114

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

Δικτυακός Προγραμματισμός (Sockets Programming) Εργαστήριο Γ Εξάμηνο, Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Δικτυακός (Sockets Programming) Εργαστήριο Γ Εξάμηνο, Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Δήλωση Οι διαφάνειες βασίζονται στα βιβλία: (1) Δικτυακός, Douglas E. Comer, David L. Stevens, Εκδόσεις ΙΩΝ,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Προγραμματισμός με BSD Sockets σε περιβάλλον Linux Προγραμματισμός με BSD Sockets σε περιβάλλον Linux Εργαστήριο Λειτουργικών Συστημάτων 8ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Απρίλιος 2016 Περίγραμμα παρουσίασης 1 Εισαγωγή 2 Δικτυακά

Διαβάστε περισσότερα

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

Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δίκτυα Επικοινωνιών ΙΙ: Network Programming UDP Sockets, Signals Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 UDP vs TCP Το UDP είναι ένα connectionless, μη αξιόπιστο,

Διαβάστε περισσότερα

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

Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets Δίκτυα Επικοινωνιών ΙΙ: Network Programming TCP Sockets Δρ. Απόστολος Γκάμας Διδάσκων 407/80 gkamas@uop.gr Δίκτυα Επικοινωνιών ΙΙ Διαφάνεια 1 1 Δικτυακός Προγραμματισμός Βασικές Έννοιες: IP addresses,

Διαβάστε περισσότερα

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

Εργαστήριο Δικτύων Υπολογιστών Εργαστήριο Δικτύων Υπολογιστών 3 η Διάλεξη: Δικτυακός Προγραμματισμός Unix Socket programming Μοντέλο client-server O βασικός τύπος δικτυακών εφαρμογών είναι client - server H σχέση server και client μπορεί

Διαβάστε περισσότερα

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

Υποδοχείς (Sockets) Προγραμματισμός II 1 Υποδοχείς (Sockets) Προγραμματισμός II 1 lalis@inf.uth.gr Υποδοχείς Ειδικές δομές διαδιεργασιακής επικοινωνίας Προσπελάζονται μέσω περιγραφέων αρχείων μπορεί να χρησιμοποιηθούν οι read, write, close μπορεί

Διαβάστε περισσότερα

Κ. Στάµος Μηχανικός Η/Υ και Πληροφορικής, Πανεπιστήµιο Πατρών Μηχανικός Έρευνας και Ανάπτυξης, ΕΜ6/ΕΑΙΤΥ

Κ. Στάµος Μηχανικός Η/Υ και Πληροφορικής, Πανεπιστήµιο Πατρών Μηχανικός Έρευνας και Ανάπτυξης, ΕΜ6/ΕΑΙΤΥ σελίδα 1 Κ. Στάµος Μηχανικός Η/Υ και Πληροφορικής, Πανεπιστήµιο Πατρών Μηχανικός Έρευνας και Ανάπτυξης, ΕΜ6/ΕΑΙΤΥ Περιεχόµενα Αναφορά στις αλλαγές που επιφέρει το IPv6 στην ανάπτυξη δικτυακών εφαρµογών

Διαβάστε περισσότερα

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

Προγραµµατισµός ικτύων Ε-01 Προγραµµατισµός ικτύων Ε-01 4η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Στο σηµερινό µάθηµα...

Διαβάστε περισσότερα

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

Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή Ζητήματα Σχεδίασης Λογισμικού Εξυπηρετητή Διαδικτυακός και Ταυτόχρονος Προγραμματισμός 1 Ταυτόχρονοι και Επαναληπτικοί Εξυπηρετητές Επαναληπτικός εξυπηρετητής: επεξεργάζεται μόνο μία αίτηση τη φορά. Ταυτόχρονος

Διαβάστε περισσότερα

Socket Application Programming Interface

Socket Application Programming Interface Socket Application Programming Interface Εισαγωγή Το socket είναι ένας τύπος διεπαφής μεταξύ των προγραμμάτων εφαρμογής και του λογισμικού πρωτοκόλλων Είναι ευρέως διαθέσιμο για να διασφαλίζεται η μεταφερσιμότητα

Διαβάστε περισσότερα

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

Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 Ντίρλης Νικόλαος- ΕΤΥ 3ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 25 ΟΚΤΩΒΡΙΟΥ 2013 ΑΙΘΟΥΣΑ Β4 1 Διαχείριση εργασιών fork(), exit(), exec() (βλ 2 ο Φροντ.) Επικοινωνία διεργασιών signals (βλ 2 ο Φροντ.) sockets και client/server,

Διαβάστε περισσότερα

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

Δικτυακός προγραμματισμός Δικτυακός προγραμματισμός (hands on) Εργαστήριο Δικτύων Υπολογιστών 2014-2015 Τμήμα Μηχανικών Η/Υ και Πληροφορικής Μοντέλο client-server O βασικός τύπος δικτυακών εφαρμογών είναι client - server H σχέση

Διαβάστε περισσότερα

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

4 η ιάλεξη: Signals UDP Sockets Εργαστήριο ικτύων Υπολογιστών 4 η ιάλεξη: ικτυακός Προγραμματισμός Signals UDP Sockets TCP sockets και signals Όταν σε ένα TCP server κάνουμε fork (γεννάμε διεργασίες-παιδιά servers για να εξυπηρετήσουμε

Διαβάστε περισσότερα

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

Εργαστήριο Λειτουργικών Συστήματων 8ο εξάμηνο, Ακαδημαϊκή περίοδος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr Εργαστήριο

Διαβάστε περισσότερα

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

Λειτουργικά Συστήματα Λειτουργικά Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ No:09 Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

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

Επικοινωνία Client/Server Υποδοχές Επικοινωνία Client/Server Υποδοχές Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης Επικοινωνία με Υποδοχές 1 Ορισμός των Υποδοχών (sockets) Τα sockets προσφέρουν μια γενικευμένη ικανότητα

Διαβάστε περισσότερα

{ int pipe(int fd[ ]) close

{ int pipe(int fd[ ]) close 104 { { { { { { 105 pipe { int pipe(int fd[ ]) { fd[0] fd[1] {, -,,, write read { close { pipe 0-1 106 pipe /* File: pipe_demo.c */ #include /* For printf */ #define READ 0 /* Read end of pipe

Διαβάστε περισσότερα

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

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service) Socket *sopen(const int type, const int protocol, const char *host, const char *service) Στην περίπτωση ενός client, δημιουργεί μια νέα σύνδεση και κατασκευάζει μια δομή Socket που σχετίζεται με αυτή Σε

Διαβάστε περισσότερα

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

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο 2012-2013 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη Project 2012-2013 Υλοποίηση ενός chat server-client Παράδοση: 7/2/2013

Διαβάστε περισσότερα

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 1999-2000 ΜΑΘΗΜΑ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ : Θ. ΑΠΟΣΤΟΛΟΠΟΥΛΟΣ ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ CLIENT-SERVER(πελάτη-εξυπηρετητή)

Διαβάστε περισσότερα

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

Προγραµµατισµός ικτύων Ε-01 Προγραµµατισµός ικτύων Ε-01 3η ιάλεξη ιδάσκων: Νίκος Ντάρµος [http://www.cs.uoi.gr/~ntarmos/courses/networkprogramming/] Τµήµα Πληροφορικής Πανεπιστήµιο Ιωαννίνων Στο σηµερινό µάθηµα...

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ειδικά Θέματα Προγραμματισμού

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 11: Sockets Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

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

Η Υλοποίηση της Επικοινωνίας. Κατανεµηµένα Συστήµατα Η Υλοποίηση της Επικοινωνίας στα Κατανεµηµένα Συστήµατα ιαφάνειες στα πλαίσια του µαθήµατος: Κατανεµηµένα Συστήµατα Ε Εξάµηνο, Τµήµα Πληροφορικής και Τεχνολογίας Υπολογιστών, ΤΕΙ Λαµίας Πέτρος Λάµψας 2002

Διαβάστε περισσότερα

Εισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός

Εισαγωγή Επανάληψη. ΤΕΙ Στερεάς Ελλάδας. ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Διαδικτυακός Προγραμματισμός Εισαγωγή Επανάληψη ΣT Εξάμηνο, Κατεύθυνση Μηχανικών Δικτύων Τ.Ε. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. ΤΕΙ Στερεάς Ελλάδας Δήλωση Οι διαφάνειες βασίζονται στα βιβλία: (1) Computer Networking: A Top Down Approach

Διαβάστε περισσότερα

Κεφάλαιο 7.3. Πρωτόκολλο TCP

Κεφάλαιο 7.3. Πρωτόκολλο TCP Κεφάλαιο 7.3 Πρωτόκολλο TCP Πρωτόκολλο TCP Το πρωτόκολλο Ελέγχου Μετάδοσης (Transmission Control Protocol, TCP) είναι το βασικό πρωτόκολο του Επιπέδου Μεταφοράς του μοντέλου TCP/IP. Παρέχει υπηρεσίες προσανατολισμένες

Διαβάστε περισσότερα

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1

Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 Διαδιεργασιακή επικοινωνία (inter-process communication IPC) Προγραμματισμός II 1 lalis@inf.uth.gr Συνεργασία ανάμεσα σε διεργασίες Για ασφάλεια/ανεξαρτησία, το ΛΣ εξασφαλίζει πλήρη απομόνωση ανάμεσα στις

Διαβάστε περισσότερα

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

Πρωτόκολλα Διαδικτύου Πρωτόκολλα Διαδικτύου Μέρος 1ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Εισαγωγή στην Τεχνολογία TCP/IP To TCP/IP σημαίνει Transmission Control Protocol / Internet Protocol και θα μπορούσε να θεωρηθεί ότι πρόκειται

Διαβάστε περισσότερα

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

HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη HY-335a Project: microtcp *, μία lightweight TCP βιβλιοθήκη Deadline πρώτης ϕάσης : 13 Δεκεμβρίου 2016, 23:59 * Εμπνευσμένο και υλοποιημένο από το Μανώλη Σουρλίγκα :) Γενική περιγραϕή Στο οικοσύστημα του

Διαβάστε περισσότερα

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

2η Προγραµµατιστική Εργασία Προγραµµατισµός ικτύων (Ε-01) 2η Προγραµµατιστική Εργασία Επέκταση ϐασικής ϐιβλιοθήκης δικτυακού προγραµµατισµού και χρήση της για την υλοποίηση παράλληλου εξυπηρετητή πρωτοκόλλου µεταφοράς αρχείων ιδάσκων

Διαβάστε περισσότερα

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης

14. Δικτύωση με Java Δικτύωση με Java Sockets Δημιουργία της σύνδεσης Διευθυνσιοδότηση της σύνδεσης 14. Δικτύωση με Java Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να δημιουργείτε έναν ελάχιστο εξυπηρέτη TCP/IP σε Java Να δημιουργείτε έναν ελάχιστο εξυπηρετούμενο TCP/IP σε Java Να κατανοείτε πώς υλοποιούνται

Διαβάστε περισσότερα

ικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1

ικτύωσησε Java Κατανεµηµένα Συστήµατα 08-1 ικτύωσησε Java ιευθύνσεις IP Υποδοχές ρεύµατος Σειριακοποίηση αντικειµένων Υποδοχές δεδοµενογραφηµάτων Υποδοχές πολυεκποµπής Οµοιόµορφοι Εντοπιστές Πόρων Κατανεµηµένα Συστήµατα 08-1 Υποδοχές σε C ικτύωσησε

Διαβάστε περισσότερα

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

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ Σχεδιασμός και υλοποίηση υποδομής σημείωσης διεργασιών στον

Διαβάστε περισσότερα

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου

4.1.1 Πρωτόκολλο TCP - Δομή πακέτου 4.1.1 Πρωτόκολλο TCP - Δομή πακέτου 1 / 38 Παράδειγμα Έστω ότι θέλουμε να αποστείλουμε ένα μήνυμα μέσω ηλεκτρονικού ταχυδρομείου. Αρχικά η εφαρμογή χρησιμοποιώντας τα πρωτόκολλα του επιπέδου εφαρμογής

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');

Διαβάστε περισσότερα

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

Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) TEI Σερρών Τμήμα Πληροφορικής και Επικοινωνιών Δίκτυα Υπολογιστών ΙΙ (Ασκήσεις Πράξης) Ανάλυση Πρωτοκόλλων Τομέας Τηλεπικοινωνιών και Δικτύων Δρ. Αναστάσιος Πολίτης Καθηγητής Εφαρμογών anpol@teiser.gr

Διαβάστε περισσότερα

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

Βασικά Θέματα Επικοινωνίας. Κατανεμημένα Συστήματα 1 Βασικά Θέματα Επικοινωνίας Κατανεμημένα Συστήματα 1 lalis@inf.uth.gr Πρωτόκολλο επικοινωνίας Η/Υ Προσδιορίζει τους κανόνες που διέπουν την επικοινωνία ανάμεσα στα εμπλεκόμενα μέρη τα μηνύματα και (εν μέρει)

Διαβάστε περισσότερα

Αποµακρυσµένη κλήση διαδικασιών

Αποµακρυσµένη κλήση διαδικασιών Αποµακρυσµένηκλήση διαδικασιών Τοπική κλήση διαδικασιών Αποµακρυσµένη κλήση διαδικασιών Μεταβίβαση παραµέτρων Πρωτόκολλα επικοινωνίας Αντιγραφή µηνυµάτων Προδιαγραφές διαδικασιών RPC στο σύστηµα DCE Κατανεµηµένα

Διαβάστε περισσότερα

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M. ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26 Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.: 43 Άσκηση 3 Μια αξιόπιστη multicast υπηρεσία επιτρέπει σε έναν

Διαβάστε περισσότερα

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

Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών Επικοινωνία Client/Server Απομακρυσμένη Κλήση Διαδικασιών Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης Επικοινωνία -RPC 1 Υλοποίηση RPC Προκειμένου να επιτευχθεί διαφάνεια στην κλήση RPC,

Διαβάστε περισσότερα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Περιεχόμενα ενότητας Διεργασίες Κλήσεις δημιουργίας και τερματισμού διεργασιών Επικοινωνία διεργασιών μέσω

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Βιβλιοθήκη stdio. Προγραμματισμός II 1 Βιβλιοθήκη 1 lalis@inf.uth.gr Δεδομένα και ερμηνεία (ξανά) Τα δεδομένα στον Η/Υ έχουν δυαδική μορφή (bytes) Η ερμηνεία των bytes εξαρτάται από το πρόγραμμα που παράγει/καταναλώνει τα δεδομένα Μια δημοφιλής

Διαβάστε περισσότερα

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο SUN RPC. Κλήση Αποµακρυσµένων ιαδικασιών (RPC) Σύνδεση: Port Mapper.

Εισαγωγή. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο SUN RPC. Κλήση Αποµακρυσµένων ιαδικασιών (RPC) Σύνδεση: Port Mapper. Εισαγωγή Ε-03: Λειτουργικά Συστήµατα ΙΙ Εαρινό Εξάµηνο 2005-06 Sun RPC MPI «Sun RPC & MPI» ρ. Παναγιώτης Χατζηδούκας (Π..407/80) E-03: Λειτουργικά Συστήµατα ΙΙ 1 E-03: Λειτουργικά Συστήµατα ΙΙ 2 Κλήση

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

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

Δυναμική δέσμευση και αποδέσμευση μνήμης. Προγραμματισμός II 1 Δυναμική δέσμευση και αποδέσμευση μνήμης Προγραμματισμός II 1 lalis@inf.uth.gr Γιατί χρειάζεται η δυναμική μνήμη; Οι απαιτήσεις του προγράμματος σε μνήμη μπορεί να είναι άγνωστες την ώρα της συγγραφής

Διαβάστε περισσότερα

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.1.1. Γενικές Αρχές 1. Τι ονοµάζεται επικοινωνιακό υποδίκτυο και ποιο είναι το έργο του; Το σύνολο όλων των ενδιάµεσων κόµβων που εξασφαλίζουν την επικοινωνία µεταξύ

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 7ο ΚΕΦΑΛΑΙΟ ΕΡΩΤΗΣΕΙΣ - ΑΣΚΗΣΕΙΣ 1. Για να διεκπεραιωθεί η μεταφορά των πακέτων από την πηγή στον προορισμό μεταξύ των κόμβων του επικοινωνιακού υποδικτύου απαιτείται η

Διαβάστε περισσότερα

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις

Διαβάστε περισσότερα

Προγραμματισμός συστημάτων UNIX/POSIX

Προγραμματισμός συστημάτων UNIX/POSIX Προγραμματισμός συστημάτων UNIX/POSIX Προχωρημένη διαδιεργασιακή επικοινωνία: επώνυμοι αγωγοί (FIFOs) ουρές μηνυμάτων (message queues) κοινόχρηστη μνήμη (shared memory) Ανάγκη Ότι είδαμε μέχρι τώρα μπορεί

Διαβάστε περισσότερα

Network Address Translation (NAT)

Network Address Translation (NAT) HY335Α Δίκτυα Υπολογιστών Xειμερινό Εξάμηνο 2016-2017 Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών Network Address Translation (NAT) Network Layer Private IP Addresses Πρόβλημα: o χώρος των ΙΡ διευθύνσεων

Διαβάστε περισσότερα

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές

Διαβάστε περισσότερα

Topic 5: Sockets. *Ευχαριστίες στους Jim Kurose, Keith Ross, Τάκη Σταµατόπουλο, Αλέξη ελή, και Αντώνη ελιγιαννάκη

Topic 5: Sockets. *Ευχαριστίες στους Jim Kurose, Keith Ross, Τάκη Σταµατόπουλο, Αλέξη ελή, και Αντώνη ελιγιαννάκη Topic 5: Sockets *Ευχαριστίες στους Jim Kurose, Keith Ross, Τάκη Σταµατόπουλο, Αλέξη ελή, και Αντώνη ελιγιαννάκη Επικοινωνία διεργασιών σε διαφορετικούς υπολογιστές Έχουµε δει(ή θαδούµε) διαδιεργασιακή

Διαβάστε περισσότερα

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4

Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4 Δίκτυα Υψηλών Ταχυτήτων Ενότητα 7: Διευθυνσιοδότηση Internet Protocol (IP) v4 Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 4: MPI_ANY_TAG,MPI_ANY_SOURCE,MPI_Bcast, MPI_Wtime, MPI_Wait, MPI_Test, MPI_Scatter Δρ. Μηνάς Δασυγένης

Διαβάστε περισσότερα

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1

Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 Εικονική Μνήμη (Virtual Memory) Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη και επικοινωνία διεργασιών Κάθε διεργασία έχει δική της ιδιωτική μνήμη Μια διεργασία δεν μπορεί να γράψει/διαβάσει από/σε θέσεις

Διαβάστε περισσότερα

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 9 : Ομάδες Εντολών: Ιδιότητες και Λειτουργίες Ευάγγελος Καρβούνης Παρασκευή, 15/01/2016 Τι είναι ομάδα εντολών;

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα. Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα. Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Κατανεμημένα Συστήματα Ενότητα # 4: Μηχανισμοί Επικοινωνίας Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου

Διαβάστε περισσότερα

(C) 2010 Pearson Education, Inc. All rights reserved.

(C) 2010 Pearson Education, Inc. All rights reserved. Connectionless transmission with datagrams. Connection-oriented transmission is like the telephone system You dial and are given a connection to the telephone of fthe person with whom you wish to communicate.

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

Δίκτυα Θεωρία

Δίκτυα Θεωρία Δίκτυα Θεωρία 2016-17 Κεφάλαιο 4 1. Γιατί η μεταφορά των δεδομένων δεν καλύπτεται επαρκώς από το Επίπεδο Δικτύου; Επειδή το επίπεδο δικτύου από τη φύση του είναι αναξιόπιστο, τα πακέτα φθάνουν καθυστερημένα,

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

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

Εργαστήριο Δικτύων Υπολογιστών Εργαστήριο Δικτύων Υπολογιστών 2 η Διάλεξη: TCP/UDP Δικτυακά πρωτόκολλα / εφαρμογές Ports Unix δικτυακές εντολές Transmission Control Protocol - TCP Πρωτόκολλο Mεταφοράς RFC 793 [Postel 1981] Xρησιμοποιεί

Διαβάστε περισσότερα

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

ιαδικτυακές Εφαρµογές ιαδικτυακές Εφαρµογές µε Java2 Στοιχεία ικτυακής Επικοινωνίας Όροι IP address 32bit αριθµός που χρησιµοποιείται από το Internet Protocol για την παράδοση δεδοµένων στο σωστό υπολογιστή στο δίκτυο. Port

Διαβάστε περισσότερα

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Ορίσματα στο QtSpim (set parameters

Διαβάστε περισσότερα

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Μετατροπή ASCII σε Δεκαδικό

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας Δίκτυα Υπολογιστών Firewalls Χάρης Μανιφάβας 1 Επικοινωνία Βασίζεται στη μεταβίβαση μηνυμάτων (λόγω απουσίας διαμοιραζόμενης μνήμης) Απαιτείται συμφωνία φόρμας μηνυμάτων Πρότυπο Στόχος τυποποίησης = Συνεργασία

Διαβάστε περισσότερα

Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP);

Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP); 7.5. Πρωτόκολλο IP Τι είναι το πρωτόκολλο Διαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναμα πακέτα που μεταφέρονται ανεξάρτητα

Διαβάστε περισσότερα

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 23: Εισαγωγή στην Δικτύωση (Networking) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Διευθύνσεις και Θύρες - Sockets και ServerSockets Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ233 Αντικειμενοστρεφής

Διαβάστε περισσότερα

Βιβλιοθήκη stdio. Προγραμματισμός II 1

Βιβλιοθήκη stdio. Προγραμματισμός II 1 Βιβλιοθήκη 1 lalis@inf.uth.gr Σύνοψη Ορίστηκε από τον Dennis Ritchie το 1975 Μέρος του προτύπου ANSI C Λειτουργίες εισόδου/εξόδου υψηλού επίπεδου και ανεξάρτητες λειτουργικού συστήματος Υποστήριξη για

Διαβάστε περισσότερα

Πρωτόκολλο TCP Διάλεξη Ι

Πρωτόκολλο TCP Διάλεξη Ι Πρωτόκολλο TCP Διάλεξη Ι Εισαγωγή Οι υπηρεσίες μεταβίβασης δεδομένων ανάμεσα σε δύο επικοινωνούντες πόρους κατατάσσονται σε δύο κατηγορίες: Connectionless ή datagram Connection-oriented Οι υπηρεσίες της

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

ΑΤΜ PROJECT ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ 2011-2012. Άννα Τριανταφύλλου ΑΕΜ : 456. επιβλέπων καθηγητής: Μηνάς Δασυγένης

ΑΤΜ PROJECT ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ 2011-2012. Άννα Τριανταφύλλου ΑΕΜ : 456. επιβλέπων καθηγητής: Μηνάς Δασυγένης Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΑΤΜ PROJECT Άννα Τριανταφύλλου ΑΕΜ : 456 επιβλέπων καθηγητής: Μηνάς Δασυγένης Περιεχόμενα 1. 2. 3.

Διαβάστε περισσότερα

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & Άνοιγμα αρχείου μέσα από τo SPIM, διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη (Διάλεξη 3) 1 Μετατροπή χαρακτήρων ASCII σε ακέραιο Ο πιο κάτω κώδικας

Διαβάστε περισσότερα

ΕΑΠ/ΠΛΗ22/ΑΘΗ.3 4 η ΟΣΣ 15/03/2014 Συμπληρωματικές Διαφάνειες

ΕΑΠ/ΠΛΗ22/ΑΘΗ.3 4 η ΟΣΣ 15/03/2014 Συμπληρωματικές Διαφάνειες ΕΑΠ/ΠΛΗ22/ΑΘΗ.3 4 η ΟΣΣ 5/03/204 Συμπληρωματικές Διαφάνειες Νίκος Δημητρίου ΟΣΣ/5.03.204/Ν.Δημητρίου ΟΣΣ/5.03.204/Ν.Δημητρίου 2 ΟΣΣ/5.03.204/Ν.Δημητρίου 3 ΟΣΣ/5.03.204/Ν.Δημητρίου 4 Θεωρία Aloha/Slotted

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Γ Τάξη ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑ.Λ. ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ Κωνσταντοπούλου Μ., Χρυσοστόμου Γ.

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Γ Τάξη ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑ.Λ. ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ Κωνσταντοπούλου Μ., Χρυσοστόμου Γ. ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Γ Τάξη ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΑ.Λ. ΤΕΤΡΑΔΙΟ ΜΑΘΗΤΗ Κωνσταντοπούλου Μ., Χρυσοστόμου Γ. Υποδείξεις απαντήσεων/λύσεων στις ερωτήσεις, ασκήσεις και δραστηριότητες του τετραδίου μαθητή, Κεφ.1

Διαβάστε περισσότερα

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

Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα Επικοινωνίας Πρωτόκολλο IP Πρωτόκολλα επικοινωνίας Ορισμός Σύνολα προσυμφωνημένων κανόνων που απαιτούνται για τον καθορισμό του τρόπου με τον οποίο επιτυγχάνεται η ανταλλαγή δεδομένων, και επομένως

Διαβάστε περισσότερα

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET Κεφάλαιο 4: Τεχνικές Μετάδοσης ΜΕΤΑΓΩΓΗ Τεχνική µεταγωγής ονομάζεται ο τρόπος µε τον οποίο αποκαθίσταται η επικοινωνία ανάµεσα σε δύο κόµβους με σκοπό την

Διαβάστε περισσότερα

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

Διαβάστε περισσότερα

Κατανεμημένα Συστήματα. Ενότητα # 11: Μηνυματοστρεφές ενδιάμεσο λογισμικό Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Κατανεμημένα Συστήματα. Ενότητα # 11: Μηνυματοστρεφές ενδιάμεσο λογισμικό Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Κατανεμημένα Συστήματα Ενότητα # 11: Μηνυματοστρεφές ενδιάμεσο λογισμικό Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού

Διαβάστε περισσότερα

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

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1 Μνήμη Διευθύνσεις Δείκτες Προγραμματισμός II 1 lalis@inf.uth.gr Μνήμη Η/Υ Ειδικό υλικό, ξεχωριστό από τον επεξεργαστή Χρησιμεύει για την αποθήκευση δεδομένων και της κατάστασης εκτέλεσης του προγράμματος

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

Διαβάστε περισσότερα

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες 0x375 - Thessaloniki Tech Talks Sessions Event 0x2 19 Μαρτίου 2010 Περιεχόμενα 1 Εισαγωγή 2 Η κλήση συστήματος ptrace 3 Νήματα 4 Το πρόγραμμα εισαγωγής κώδικα prez 5 Επίλογος Γιατί; Πολλές φορές θέλουμε

Διαβάστε περισσότερα

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

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap Version 2.00 Επιμέλεια Σημειώσεων: Δημήτρης Κόγιας Πατρικάκης Χαράλαμπος Πίνακας περιεχομένων TELNET... 2 PING...

Διαβάστε περισσότερα

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213 Μετατροπή ASCII σε Δεκαδικό

Διαβάστε περισσότερα

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη ( ιάλεξη 3) ιδάσκων: Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy

Διαβάστε περισσότερα

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες 4.1 Γενικά Σκοπός ενός δικτύου υπολογιστών είναι οι χρήστες να έχουν τη δυνατότητα να διαμοιράζονται πληροφορίες και συσκευές του δικτύου. Η σχεδίαση και η ανάπτυξη

Διαβάστε περισσότερα

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή υναµική έσµευση Μνήµης (συν.) Στην ενότητα αυτή θα µελετηθούν: Μια εφαρµογή συνδεδεµένων λιστών ιπλά συνδεδεµένες Λίστες ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Εφαρµογή Ζητούµενο: Πρόγραµµα που παίρνει σαν

Διαβάστε περισσότερα

Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1

Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1 Ουρές Μηνυμάτων (Message Queues in System V) Προγραμματισμός II 1 lalis@inf.uth.gr Ουρά μηνυμάτων Αποθήκη μηνυμάτων στην μνήμη του λειτουργικού Περιορισμένος αριθμός / όγκος μηνυμάτων Κάθε μήνυμα είναι

Διαβάστε περισσότερα

Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1

Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1 Αγωγοί/Σωλήνες (Pipes) Προγραμματισμός II 1 lalis@inf.uth.gr Τι είναι ένας αγωγός; Μηχανισμός/συσκευή επικοινωνίας διεργασιών Μετάδοση μιας ροής από bytes (μονής κατεύθυνσης) First-in-first-out (FIFO):

Διαβάστε περισσότερα