Both sides previous revisionPrevious revisionNext revision | Previous revision |
java:sockets [2018/03/08 09:24] – gthanos | java:sockets [Unknown date] (current) – external edit (Unknown date) 127.0.0.1 |
---|
{{ :java:socket-connect.png |}} | {{ :java:socket-connect.png |}} |
| |
Το πακέτο java.net της Java παρέχει την κλάση, [[http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html|Socket]], που υλοποιεί μία πλευρά μίας αμφίδρομης σύνδεσης μεταξύ ενός προγράμματος σε Java και ενός άλλου προγράμματος (όχι απαραίτητα σε java) μέσα από το δίκτυο. Η κλάση Socket χρησιμοποιεί την υποδομή των sockets του λειτουργικού συστήματος, κρύβοντας τις λεπτομέρειες του κάθε συστήματος από το πρόγραμμα σας και απαιτώντας ένα ενιαίο API ανεξάρτητα από το λειτουργικό σύστημα που βρίσκεται από κάτω. Επιπλέον, η Java περιλαμβάνει την κλάση [[http://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html|ServerSocket]], η οποία υλοποιεί ένα server-side socket το οποίο ακούει σε συγκεκριμένη πόρτα και αποδέχεται συνδέσεις από τον έξω κόσμο. | Το πακέτο java.net της Java παρέχει την κλάση, [[http://docs.oracle.com/javase/7/docs/api/java/net/Socket.html|Socket]], που υλοποιεί μία πλευρά μίας αμφίδρομης σύνδεσης μεταξύ ενός προγράμματος σε Java και ενός άλλου προγράμματος (όχι απαραίτητα σε java) μέσα από το δίκτυο. Η κλάση Socket χρησιμοποιεί την υποδομή των sockets του λειτουργικού συστήματος, κρύβοντας τις λεπτομέρειες του κάθε συστήματος από το πρόγραμμα σας και απαιτώντας ένα ενιαίο API ανεξάρτητα από το λειτουργικό σύστημα που βρίσκεται από κάτω. Επιπλέον, η Java περιλαμβάνει την κλάση [[http://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html|ServerSocket]], η οποία υλοποιεί ένα server-side socket το οποίο ακούει σε συγκεκριμένη πόρτα, ώστε να αποδέχεται συνδέσεις από τον έξω κόσμο. |
| |
Δείτε τα παρακάτω προγράμματα πελάτη/εξυπηρετητή τα οποία επικοινωνούν μεταξύ τους. Συγκεκριμένα ο πελάτης συνδέεται στον εξυπηρετητή και αποστέλλει περιεχόμενο το οποίο διαβάζει από το standard input. Ο εξυπηρετητής διαβάζει αυτό που του έστειλε ο πελάτης και του το επιστρέφει πίσω. Ο πελάτης λαμβάνει τελικά πίσω αυτό που αρχικά έστειλε στον εξυπηρετητή. | Δείτε τα παρακάτω προγράμματα πελάτη/εξυπηρετητή τα οποία επικοινωνούν μεταξύ τους. Συγκεκριμένα ο πελάτης συνδέεται στον εξυπηρετητή και αποστέλλει περιεχόμενο το οποίο διαβάζει από το standard input. Ο εξυπηρετητής διαβάζει αυτό που του έστειλε ο πελάτης και του το επιστρέφει πίσω. Ο πελάτης λαμβάνει τελικά πίσω αυτό που αρχικά έστειλε στον εξυπηρετητή. |
| |
<code java EchoServer.java> | <code java EchoServer.java> |
mport java.net.*; | import java.net.*; |
import java.io.*; | import java.io.*; |
| |
</code> | </code> |
| |
Για να εκτελέσετε τα δύο προγράμματα θα πρέπει να εκκινήσετε πρώτα το //EchoServer// δηλώνοντας το port στο οποίο θα ακούει (π.χ. ''java EchoServer 8888''). Στην συνέχεια εκκινείτε το //EchoClient// ως εξής ''java EchoClient localhost 8888''. Η σύνδεση μέσω sockets δεν υλοποιεί κάποιο πρωτόκολλο επικοινωνίας σε επίπεδο application μεταξύ των δύο άκρων (π.χ. http, ftp). | Για να εκτελέσετε τα δύο προγράμματα θα πρέπει να εκκινήσετε πρώτα το //EchoServer// δηλώνοντας το port στο οποίο θα ακούει (π.χ. ''java EchoServer 8888''). Στην συνέχεια εκκινείτε το //EchoClient// ως εξής ''java EchoClient localhost 8888''. |
| |
Δύο παραλλαγές των παρακάτω προγραμμάτων είναι η παρακάτω. Στο πρόγραμμα //EchoClient.java// πρώτα δημιουργείται το socket και μετά γίνεται connect σε συγκεκριμένη διεύθυνση (hostname, portnumber). Αντίστοιχα στο πρόγραμμα //EchoServer// πρώτα δημιουργείται το socket και στη συνέχεια γίνεται bind το server socket σε συγκεκριμένη διεύθυνση ("localhost", portnumber). | Δύο παραλλαγές των παρακάτω προγραμμάτων είναι η παρακάτω. Στο πρόγραμμα //EchoClient.java// πρώτα δημιουργείται το socket και μετά γίνεται connect σε συγκεκριμένη διεύθυνση (hostname, portnumber). Αντίστοιχα στο πρόγραμμα //EchoServer// πρώτα δημιουργείται το socket και στη συνέχεια γίνεται bind το server socket σε συγκεκριμένη διεύθυνση ("localhost", portnumber). |
</code> | </code> |
| |
|Προηγούμενο: [[:java:urls| URLs ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:concurrency_intro| Ταυτόχρονος προγραμματισμός με νήματα ]]| | |Προηγούμενο: [[:java:object_serialization| Object Serialization/Deserialization ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:java:urls| URLs ]]| |
| |