Εργαστήριο Java. Αντικείµενο: Δίκτυα. Χειρισµός URLs. Άσκηση 1. Lab11. Πακέτο java.net



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

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

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

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

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

ημιουργία Γραφικού Περιβάλλοντος

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

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #11 η : Διαδικτυακές Εφαρμογές με τη Java

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

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #17

Week 10: Graphical User Interfaces

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

HY335 4ο Φροντιστήριο

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 12 : ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ GUI AWT ΚΑΙ

Αντικειµενοστρεφής Προγραµµατισµός

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

{ πρωτόκολλο, τοπική-διεύθυνση, τοπική-διεργασία, απομακρυσμένη-διεύθυνση, απομακρυσμένη-διεργασία }

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

Κατανεμημένα Συστήματα

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΕΙΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ιανουάριος 2008 Οι απαντήσεις να είναι καθαρογραμμένες με ευδιάκριτους όλους του χαρακτήρες.

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

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Ιόνιο Πανεπιστήµιο Τµήµα Πληροφορικής Συστήµατα Επικοινωνίας. Μοντέλο TCP/IP. Ενότητα E. Πόσοι εµπλέκονται σε ένα Σύστηµα Επικοινωνίας

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας Βιβλιοθηκονοµίας. Μοντέλο TCP/IP. Ενότητα E. Συστήµατα Επικοινωνίας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

Γενικά (για τις γραπτές εξετάσεις)

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

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

Φροντιστήριο Α' Κατανεμημένα Συστήματα Επιμέλεια: Μπούτσης Ιωάννης

Λογισµικό (Software SW) Λειτουργικά Συστήµατα και ίκτυα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #18

Εισαγωγή στον Κατανεμημένο Προγραμματισμό

10.1 Γενικά για τα streams

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

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

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

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Week 12: GUIs with Swing

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

6. Εξαιρέσεις στη γλώσσα Java

Φροντιστήριο Α' Κατανεμημένα Συστήματα Επιμέλεια: Μπούτσης Ιωάννης

α. Το μέγιστο μήκος δεδομένων του ωφέλιμου φορτίου του πλαισίου Ethernet είναι 1500 οκτάδες. ΣΩΣΤΟ

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

ΚΕΦΑΛΑΙΑ attributes parameters

Άσκηση 2 η Πρωτόκολλο επικοινωνίας TCP/IP

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

Αντικειμενοστρεφής Προγραμματισμός

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

Κεφάλαιο 7 Διαδικτύωση-Internet. 7.2 Τεχνολογία TCP/IP

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

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

Interprocess Communication

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

Δίκτυα Υπολογιστών. Το επίπεδο εφαρμογής (application layer) Κ. Βασιλάκης

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

ιαδίκτυα & Ενδοδίκτυα Η/Υ

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

Remote Method Invocation (RMI)

7.2.2 Σχέση OSI και TCP/IP

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Περιεχόµενα. Πρόλογος...15

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Βασικά της γλώσσας JAVA

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. ίκτυα Υπολογιστών Ι. To Μοντέλο OSI. Αναπλ. Καθηγ. Π. εμέστιχας

Network Address Translation (NAT)

Ανάπτυξη δικτυακού παιχνιδιού με δυνατότητα συμμετοχής ακροατηρίου.

Αντικειμενοστρεφής Προγραμματισμός

Δίκτυα Υπολογιστών Ενότητα 5: User Datagram Protocol - UDP

7.2 Τεχνολογία TCP/IP

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

Δίκτυα Υπολογιστών Το επίπεδο μεταφοράς (transport layer)

Εφαρμογή Αναζήτησης στον Ελληνικό Γεωγραφικό Χώρο

ηµιουργία ιαλογικών Προγραµµάτων για το Web

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ 1 στα Δίκτυα Υπολογιστών

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ / ΕΠΑΛ(Α & Β ΟΜΑΔΑ) ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 11/12/2011 ΑΠΑΝΤΗΣΕΙΣ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

ΚΑΤΑΝΕΜΗΜΕΝΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΣΥΣΚΕΥΩΝ ΑΣΗΜΑΚΟΠΟΥΛΟΣ ΣΩΤΗΡΗΣ ΑΜ : 3021

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Α5.1 Εισαγωγή στα Δίκτυα. Α Λυκείου

Β1. Σε ένα τοπικό δίκτυο τοπολογίας Ethernet-TCP/IP το επίπεδο πρόσβασης δικτύου περιλαμβάνει:

Αντικειµενοστραφής Προγραµµατισµός

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστρεφής Προγραμματισμός

Transcript:

Εργαστήριο Java Lab11 Αντικείµενο: Δίκτυα Πακέτο java.net H Java παρέχει ένα σύνολο από ενσωµατωµένες δυνατότητες για δηµιουργία εφαρµογών στο Internet ή σε τοπικά δίκτυα. H Java παρέχει τα stream sockets και τα datagram sockets ως τρόπο για την επικοινωνία δυο εφαρµογών. Στην 1 η περίπτωση εγκαθιδρύεται µια σύνδεση ανάµεσα σε 2 διεργασίες που τρέχουν σε διαφορετικά σηµεία στο δίκτυο. Η ροή δεδοµένων µεταξύ των διεργασιών είναι συνεχής. Το πρωτόκολλο που χρησιµοποιείται είναι το TCP (Transmission Control Protocol). Στην 2 η περίπτωση ξεχωριστά πακέτα πληροφοριών µεταδίδονται χωρίς να υπάρχει εγγύηση ότι τα πακέτα θα φτάσουν στην σωστή σειρά. Το πρωτόκολλο που χρησιµοποιείται είναι το UDP (User Datagram Protocol). Χειρισµός URLs Χρησιµοποιώντας το πρωτόκολλο HTTP διευθύνσεις που περιγράφονται από ένα URL είναι δυνατόν να εντοπιστούν στο Internet. Αυτό γίνεται χρησιµοποιώντας το URL ως παράµετρο στην µέθοδο showdocument του interface AppletContext οπότε και εµφανίζει το URL στον browser που στον οποίο βρίσκεται το αντίστοιχο Applet. Τα applets επιτρέπεται να διαβάζουν αρχεία µόνο από τον server από τον οποίο το applet έχει κατέβει. Ο περιορισµός αυτός δεν ισχύει για τα applications. Άσκηση 1 Να κατασκευάσετε applet στο οποίο ο χρήστης να εισάγει ένα URL σε ένα πεδίο κειµένου και πατώντας ένα πλήκτρο να εµφανίζει τα περιεχόµενα του URL στον browser. import java.awt.event.*; import java.applet.*; public class Lab11_1a extends JApplet JButton b1; JTextField t1; //υποθέτουµε ότι υπάρχει web server στην διέυθυνση 192.168.0.119 που //περιέχει τις παραπάνω σελίδες. public void init() Container c=getcontentpane(); c.setlayout(new BorderLayout()); b1 =new JButton("Μετάβαση στην διεύθυνση"); t1 =new JTextField("http://www.sun.com"); c.add(b1,borderlayout.center); c.add(t1,borderlayout.north); b1.addactionlistener(new ActionListener() public void actionperformed(actionevent e) URL awebpage= new URL("http://www.sun.com"); AppletContext browser =getappletcontext(); browser.showdocument(awebpage); catch(malformedurlexception ex)

JOptionPane.showMessageDialog(null, "Λάθος διεύθυνση "); ); //τέλος κλάσης Lab11_1a Άσκηση 2 Να κατασκευάσετε application που να εµφανίζει σε ένα JEditorPane σελίδες web οι οποίες θα εναλλάσσονται καθώς ο χρήστης θα πατάει ένα πλήκτρο. import java.awt.event.*; import javax.swing.event.*; public class Lab11_1b extends JFrame JButton b1; JEditorPane ep1; //το ep1 είναι αντικείµενο που επιτρέπει την εµφάνιση στον χώρο του //ιστοσελίδων και αρχείων κειµένου από ένα web server. String []sites="http://192.168.0.119/index.htm", "http://192.168.0.119/photo.htm", "http://192.168.0.119/interest.htm"; //υποθέτουµε ότι υπάρχει web server στην διέυθυνση 192.168.0.119 που //περιέχει τις παραπάνω σελίδες. int sn=0; public Lab11_1b() Container c=getcontentpane(); c.setlayout(new BorderLayout()); b1 =new JButton("Επόµενη διεύθυνση"); c.add(b1,borderlayout.north); b1.addactionlistener(new ActionListener() public void actionperformed(actionevent e) getthepage(sites[sn]); sn++; sn= sn % sites.length; ); ep1=new JEditorPane(); ep1.seteditable(false); ep1.addhyperlinklistener(new HyperlinkListener() public void hyperlinkupdate(hyperlinkevent e) if (e.geteventtype()==hyperlinkevent.eventtype.activated) getthepage(e.geturl().tostring()); ); c.add(new JScrollPane(ep1), BorderLayout.CENTER); setsize(300,400); setvisible(true); private void getthepage(string location)

ep1.setpage(location); JOptionPane.showMessageDialog(null, "Λάθος διεύθυνση για εµφάνιση στο JEditorPane"); Lab11_1b a=new Lab11_1b(); a.setdefaultcloseoperation(jframe.exit_on_close); //τέλος κλάσης Lab11_1b Άσκηση 3 Να κατασκευάσετε console application που να εµφανίζει το domain name και την TCP/IP διεύθυνση του υπολογιστή στον οποίο λειτουργεί. public class Lab11_2 InetAddress x; x=inetaddress.getlocalhost(); System.out.println("domain name: " +x.gethostname()+ " TCP/IP address: " + x.gethostaddress()); catch (UnknownHostException ex) System.err.println("The computer does not have a tcp/ip address"); Stream Sockets Πρόκειται για το ένα άκρο από µια σύνδεση 2 κατευθύνσεων µεταξύ 2 προγραµµάτων που εκτελούνται στο δίκτυο. Η κλάση Socket υλοποιεί την client πλευρά και η κλάση ServerSocket υλοποιεί την server πλευρά της σύνδεσης Η Java παρέχει την δυνατότητα για Sockets Based Communication γεγονός που επιτρέπει στις εφαρµογές να αντιµετωπίζουν την δικτύωση ως streams από δεδοµένα. Η Java παρέχει stream sockets και datagram sockets. Με τα stream sockets µια διεργασία εγκαθιδρύει µια σύνδεση µε µια άλλη διεργασία. Όσο η σύνδεση εξακολουθεί να υπάρχει τα δεδοµένα ανταλλάσσονται µεταξύ των διεργασιών µε συνεχόµενα streams (connection oriented protocol). Το πρωτόκολλο που χρησιµοποιείται για την µετάδοση είναι το TCP (Transmission Control Protocol). Άσκηση 4 (connection oriented streams based transmission) Να κατασκευάσετε 2 εφαρµογές. Μια client εφαρµογή που θα στέλνει ακεραίους σε µια server εφαρµογή η οποία θα τους επεξεργάζεται και θα επιστρέφει µια πραγµατική τιµή στην client εφαρµογή. Όταν το άθροισµα των τιµών που έχει επιστρέψει ο server γίνει µεγαλύτερο από 1000 η επικοινωνία µεταξύ των 2

εφαρµογών να διακόπτεται. Για το παράδειγµα η επεξεργασία που θα γίνεται από τον server θα είναι ο υπολογισµός του αθροίσµατος x+x/2+x/3+ +x/1000 όπου x θα είναι η τιµή που θα στέλνει ο client στον server. Server εφαρµογή public class Lab11_3server ServerSocket server; Socket connection; DataInputStream dis; DataOutputStream dos; public void startserver() // ηµιουργία ενός ServerSocket στην θύρα 2000 για το πολύ 10 //συνδέσεις σε αναµονή. server=new ServerSocket(2000,10); while (true) //επιτρέπει στον server να δεχθεί συνδέσεις connection=server.accept(); System.out.println("connected to TCP/IP address: " + connection.getinetaddress().gethostaddress()); dis=new DataInputStream(connection.getInputStream()); dos=new DataOutputStream(connection.getOutputStream()); boolean f=true; while (f) int x=dis.readint(); System.out.println("Data received from client "+ x); dos.writedouble(processdata(x)); catch (EOFException ex) f=false; dis.close(); dos.close(); connection.close(); catch (SocketException ex) private double processdata(int x) double sum=0.0; for (int i=1;i<=100;i++) sum+=(double)x/i;

return sum; Lab11_3server serv= new Lab11_3server(); serv.startserver(); Client εφαρµογή import java.awt.event.*; public class Lab11_3client extends JFrame Socket connection; DataInputStream dis; DataOutputStream dos; JTextField t1; JButton b1; JLabel l1; double s=0; public Lab11_3client() super("οθόνη πελάτη "); Container c=getcontentpane(); c.setlayout(new FlowLayout()); t1=new JTextField(20); l1=new JLabel(" 0.0"); b1=new JButton("Αποστολή δεδοµένων από τον client"); b1.addactionlistener(new ActionListener() public void actionperformed(actionevent e) int x= Integer.parseInt(t1.getText()); dos.writeint(x); double v= dis.readdouble(); s+=v; System.out.println("Data received from server" + v); l1.settext(string.valueof(s)); if (s>1000) closeconnection(); catch (EOFException ex) System.out.println("End of Data");

); c.add(t1); c.add(b1); c.add(l1); setsize(300,300); setvisible(true); startclient(); public void startclient() //client=new Socket(InetAddress.getLocalHost(),2000); connection=new Socket(InetAddress.getByName("192.168.0.119"),2000); dis=new DataInputStream(client.getInputStream()); dos=new DataOutputStream(client.getOutputStream()); public void closeconnection() dis.close(); dos.close(); connection.close(); Lab11_3client cl= new Lab11_3client(); cl.setdefaultcloseoperation(jframe.exit_on_close); Datagram Sockets Με τα datagram sockets ξεχωριστά πακέτα από πληροφορίες µεταδίδονται. Το πρωτόκολλο που χρησιµοποιείται είναι το UDP (User Datagram Protocol) που είναι connectionless πρωτόκολλο που δεν εγγυάται ότι τα πακέτα φτάνουν µε την σωστή σειρά. Το UDP είναι κατάλληλο για περιπτώσεις που δεν απαιτούν την αξιοπιστία µεταφοράς του TCP. Ένα socket δηµιουργείται µε socket=new DatagramSocket(<αριθµός θύρας>); για τον server και me socket=new DatagramSocket(); για τον client Ένα DatagramPacket για αποστολή δεδοµένων δηµιουργείται ως εξής: sp=new DatagramPacket(<δυαδικά δεδοµένα>, <µήκος δυαδικών δεδοµένων>, <διεύθυνση παραλήπτη>, <θύρα παραλήπτη>); Το DatagramPacket αποστέλλεται socket.send(sp);

Ένα DatagramPacket για λήψη δεδοµένων δηµιουργείται ως εξής: byte data[]=new byte[100]; rp=new DatagramPacket(data,data.length); Το DatagramPacket λαµβάνεται socket.receive(rp); Άσκηση 5 (connectionless transmission with datagrams) Να κατασκευάσετε 2 εφαρµογές µε την µια στον ρόλο του πελάτη που στέλνει δεδοµένα (λεκτικά) στην άλλη που θα είναι στον ρόλο του εξυπηρετητή και θα επιστρέφει στον πελάτη το λεκτικό ανεστραµµένο. Εφαρµογή Εξυπηρετητή public class Lab11_4server extends JFrame private JTextArea ta1; private DatagramPacket sp, rp; private DatagramSocket socket; public Lab11_4server() super("εξυπηρέτης"); Container c=getcontentpane(); ta1=new JTextArea(); c.add(new JScrollPane(ta1), BorderLayout.CENTER); setsize(400,400); setvisible(true); //δηµιουργία του socket µε το οποίο θα στέλνονται και θα λαµβάνονται πακέτα socket=new DatagramSocket(5000); catch (SocketException ex) System.exit(1); //constructor public void waitforpackets() while (true)

byte data[]=new byte[100]; rp=new DatagramPacket(data,data.length); socket.receive(rp); String s=new String(rp.getData(),0,rp.getLength()); ta1.append("\nαπό τον υπολογιστή: " + rp.getaddress()+ "\n εδοµένα: " + s); //αντιστροφή λεκτικού και µετατροπή σε byte array data=new StringBuffer(s).reverse().toString().getBytes(); sp=new DatagramPacket(data, data.length, rp.getaddress(),rp.getport()); socket.send(sp); ta1.setcaretposition(ta1.gettext().length()); // catch(ioexception ex) //while //waitforpackets Lab11_4server a=new Lab11_4server(); a.setdefaultcloseoperation(jframe.exit_on_close); a.waitforpackets(); //main //Lab11_4server Εφαρµογή Πελάτη import java.awt.event.*; public class Lab11_4client extends JFrame private JTextField t1; private JTextArea ta1; private DatagramPacket sp, rp; private DatagramSocket socket; public Lab11_4client() super( "Πελάτης" ); Container container = getcontentpane(); t1 = new JTextField(20); t1.addactionlistener(new ActionListener() public void actionperformed( ActionEvent event )

ta1.append("\nαποστολή πακέτου που περιέχει: " + event.getactioncommand() + "\n" ); String message = event.getactioncommand(); //µετατροπή του µηνύµατος σε πίνακα bytes (data) byte data[] = message.getbytes(); //δηµιουργία του πακέτου προς αποστολή περιέχει πληροφορίες για //τα δεδοµένα, το µήκος τους, τον παραλήπτη και την θύρα sp = new DatagramPacket(data, data.length, InetAddress.getLocalHost(), 5000 ); //αποστολή πακέτου socket.send(sp); ta1.append("το πακέτο στάλθηκε\n" ); ta1.setcaretposition(ta1.gettext().length() ); // actionperformed ); container.add( t1, BorderLayout.NORTH ); ta1 = new JTextArea(); container.add(new JScrollPane(ta1),BorderLayout.CENTER ); setsize(400, 300); setvisible(true); socket = new DatagramSocket(); catch( SocketException ex ) System.exit(1); //constructor public void waitforpackets() while (true) byte data[] = new byte[100]; rp = new DatagramPacket(data, data.length); socket.receive(rp); String s=new String(rp.getData(),0,rp.getLength()); ta1.append("\nαπό τον υπολογιστή: " + rp.getaddress()+ "\n εδοµένα: " + s); ta1.setcaretposition(ta1.gettext().length()); catch( IOException ex) //while // waitforpackets Lab11_4client a = new Lab11_4client(); a.setdefaultcloseoperation(jframe.exit_on_close ); a.waitforpackets(); //main // Lab11_4client