background image

Σχεδιασμός και κατασκευή ενός υβριδικού αμυντικού αυτοματοποιημένου ρομποτικού συστήματος 

 

 

 

171 

πρωτόκολλο  αυτό  είναι ότι  απλά  μεταφέρει  τη  ροή  δεδομένων  χωρίς  να  γνωρίζει  τι  είδους 

πληροφορία μεταφέρει. 

Από την άλλη πλευρά βρίσκεται το πρωτόκολλο UDP, το οποίο στέλνει τα δεδομένα 

σε  κομμάτια  που  αποκαλούνται  datagrams  [27].  Το  πρωτόκολλο  αυτό  είναι  αναξιόπιστο, 

καθώς  μερικές  φορές  η  πληροφορία  που  μεταφέρεται  μπορεί  να  μην  είναι  ολόκληρη  ή  να 

αποσταλεί με λάθος σειρά, με αποτέλεσμα το μήνυμα που θα ληφθεί να μην είναι σωστό. 

Τα βήματα που παρουσιάζονται σχηματικά στην Εικόνα 84, εκτελούνται κάθε φορά για την 

επίτευξη της επικοινωνίας μεταξύ client-server, ανεξάρτητα πρωτοκόλλου, είναι τα εξής:  

1.  Δημιουργία  socket.  Τόσο  ο  server  όσο  και  ο  client  έχουν  την  ανάγκη  δημιουργίας 

socket για ξεχωριστούς λόγους. Ο server δημιουργεί το socket για να «ακούσει» εάν 

υπάρχουν νέες συνδέσεις, ενώ ο client το χρησιμοποιεί για να συνδεθεί με το server. 

Η δημιουργία του socket γίνεται με την κλήση της συνάρτησης socket(). 

 

2.  Για να επιτευχθεί η σύνδεση του client με το server πρέπει να γίνει γνωστοποίηση της 

διεύθυνσής τους. Τα socket που δημιουργούνται από το server ακούνε μόνο για νέες 

συνδέσεις, επομένως θα πρέπει να γίνει μια ανάθεση της διεύθυνσης του client, μιας 

και  εκείνος  αιτείται  σύνδεση  με  το  server,  με  το  socket  του  server.  Η  ανάθεση 

διεύθυνσης αυτή επιτυγχάνεται με τη βοήθεια της συνάρτησης bind(). 

 

3.  Εφόσον στο socket έχει ανατεθεί μια διεύθυνση, σταματά αυτόματα η διαδικασία της 

«ακοής»  για  επιπλέον  συνδέσεις.  Για  να  εξασφαλιστεί  όμως  ότι  δεν  θα  χαθούν 

εισερχόμενες  συνδέσεις,  δημιουργείται  μια  ουρά  αναμονής.  Αυτό  επιτρέπει  στις 

εισερχόμενες  συνδέσεις  να  περιμένουν  στην  ουρά,  ενώ  ο  διακομιστής  είναι 

κατειλημμένος. Η παραπάνω διαδικασία επιτυγχάνεται με την κλήση της συνάρτησης 

listen(). 

 

4.  Από  την  πλευρά  του  client,  μόλις  δημιουργηθεί  το  socket  πρέπει  να  επιτευχθεί  η 

σύνδεση με το server. Μόλις ενεργοποιηθεί η σύνδεση, ενεργοποιείται αυτόματα και 

το socket και ξεκινά η αποστολή και η λήψη δεδομένων. Η συνάρτηση connect() είναι 

εκείνη που δείχνει εάν μια σύνδεση είναι ενεργή.