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

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

1 ο Εργαστήριο: Κατασκευή Εφαρμογών Client-Server echoserver και echoclient – Κώδικας εφαρμογών σε C Μπαλόμπας Παναγιώτης 8ο ΕΠΑΛ Θεσσαλονίκης 1 /* Αρχείο.

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


Παρουσίαση με θέμα: "1 ο Εργαστήριο: Κατασκευή Εφαρμογών Client-Server echoserver και echoclient – Κώδικας εφαρμογών σε C Μπαλόμπας Παναγιώτης 8ο ΕΠΑΛ Θεσσαλονίκης 1 /* Αρχείο."— Μεταγράφημα παρουσίασης:

1 1 ο Εργαστήριο: Κατασκευή Εφαρμογών Client-Server echoserver και echoclient – Κώδικας εφαρμογών σε C Μπαλόμπας Παναγιώτης 8ο ΕΠΑΛ Θεσσαλονίκης 1 /* Αρχείο : echoserver.c * Program : echoserver * * Περιμένει για μια σύνδεση από μια * echoclient εφαρμογή και τα * δεδομένα, * που θα σταλούν για αντήχηση * * Χρήση : echoserver * (appnum: το port όπου αναμένει την * αίτηση από την εφαρμογή πελάτης) */ #include #define BUFFSIZE256 /* Αρχείο : echoclient.c */ * Program : echoclient * * Επικοινωνεί με την echoserver εφαρμογή, * στέλνει την είσοδο του χρήστη και * εμφανίζει την απάντηση του server * Χρήση : echoclient [appnum] * (compname : το όνομα ή η ΙΡ του Η/Υ στο * δίκτυο, στον οποίο τρέχει η εφαρμογή * εξυπηρέτης). Αν δεν δοθεί appnum, * χρησιμοποιείτε το stantard prort * αντήχησης (echo), to 7 */ #include #define BUFFSIZE256 #define INPUT_PROMPT "Input > " #define RECEIVED_PROMPT"Received> “ int readln(char *, int);

2 1 ο Εργαστήριο: Κατασκευή Εφαρμογών Client-Server echoserver – Κώδικας εφαρμογής σε C Μπαλόμπας Παναγιώτης 8ο ΕΠΑΛ Θεσσαλονίκης 2 int main(int argc, char *argv[]) { /* δηλώσεις τοπικών μεταβλητών*/ connectionconn; intlen; charbuff[BUFFSIZE]; /* έλεγχος ορθότητας παραμέτρων*/ if (argc != 2) { (void) fprintf(stderr, "usage: %s \n", argv[0]); exit(1); } /* αναμονή σύνδεσης από έναν echo client */ conn = await_contact((appnum) atoi(argv[1])); if (conn < 0) exit(1); /* επανάληψη, αντηχεί όλα τα δεδομένα που παραλαμβάνονται * μέχρι να σταλεί end of file */ while((len = recv(conn, buff, BUFFSIZE, 0)) > 0) (void) send(conn, buff, len, 0); send_eof(conn); return 0; }

3 1 ο Εργαστήριο: Κατασκευή Εφαρμογών Client-Server echoclient – Κώδικας εφαρμογής σε C (1 ο μέρος) Μπαλόμπας Παναγιώτης 8ο ΕΠΑΛ Θεσσαλονίκης 3 int main(int argc, char *argv[]) { /* δηλώσεις τοπικών μεταβλητών*/ computercomp; appnumapp; connectionconn; charbuff[BUFFSIZE]; intexpect, received, len; /* έλεγχος ορθότητας παραμέτρων*/ if (argc 3) { (void) fprintf(stderr, "usage: %s [appnum]\n“, argv[0]); exit(1);} /* μετατροπή των παραμέτρων συμβόλων σε δυαδικούς αριθμούς*/ comp = cname_to_comp(argv[1]); if (comp == -1)exit(1); if (argc == 3)app = (appnum) atoi(argv[2]); elseif ((app = appname_to_appnum("echo")) == -1)exit(1); /* εγκαθίδρυση σύνδεσης με τον echo server*/ conn = make_contact(comp, app); if (conn < 0) exit(1); (void) printf(INPUT_PROMPT); (void) fflush(stdout);

4 1 ο Εργαστήριο: Κατασκευή Εφαρμογών Client-Server echoclient – Κώδικας εφαρμογής σε C (2 ο μέρος) Μπαλόμπας Παναγιώτης 8ο ΕΠΑΛ Θεσσαλονίκης 4 /* επανάληψη: διαβάζει τα δεδομένα του χρήστη, τα στέλνει στον server, * δέχεται την απάντηση και την εμφανίζει στην οθόνη για τον χρήστη/* while((len = readln(buff, BUFFSIZE)) > 0) { /* αποστολή στον echoserver */ (void) send(conn, buff, len, 0); (void) printf(RECEIVED_PROMPT); (void) fflush(stdout); /* αποδοχή και εμφάνιση του ίδιου αριθμού bytes από τον echoserver */ expect = len; for (received = 0; received < expect;) { len = recv(conn, buff, (expect - received) < BUFFSIZE ? (expect - received) : BUFFSIZE, 0); if (len < 0) { send_eof(conn); return 1; } (void) write(STDOUT_FILENO, buff, len);received += len;} (void) printf("\n"); (void) printf(INPUT_PROMPT); (void) fflush(stdout);} /* τελειώνει η επανάληψη όταν φθάσει ένα EOF */ (void) send_eof(conn); (void) printf("\n"); return 0; }

5 1 ο Εργαστήριο: Κατασκευή Εφαρμογών Client-Server το υποπρόγραμμα readln – Κώδικας σε C Μπαλόμπας Παναγιώτης 8ο ΕΠΑΛ Θεσσαλονίκης 5 /* Αρχείο : readln.c – Υποπρόγραμμα : readln * Διαβάζει από την είσοδο μέχρι να βρει τέλος γραμμής (/n), EOF ή γεμάτο τον buffer * Επιστρέφει το μήκος των δεδομένων (πλήθος bytes). */ #include int readln(char *buff, int buffsz) { char*bp = buff, c; intn; while (bp - buff 0) { if (*bp++ == '\n‘) return (bp - buff); } if (n < 0) return -1; if (bp - buff == buffsz) while (read(STDIN_FILENO, &c, 1) > 0 && c != '\n'); return (bp - buff); }


Κατέβασμα ppt "1 ο Εργαστήριο: Κατασκευή Εφαρμογών Client-Server echoserver και echoclient – Κώδικας εφαρμογών σε C Μπαλόμπας Παναγιώτης 8ο ΕΠΑΛ Θεσσαλονίκης 1 /* Αρχείο."

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


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