<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2014-02-03 xarman <span dir="ltr"><<a href="mailto:manousidis.xar@gmail.com" target="_blank">manousidis.xar@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Χαιρετώ τη λίστα.<br>
Ενδιαφέρομαι στη κατασκευή ενός TCP Listener σε C/C++ σε Linux που να<br>
δέχεται πολλές συνδέσεις ταυτόχρονα. Έχω κάνει μία σχετική αναζήτηση στο<br>
Web και αν και είμαι γνώστης της γλώσσας C ως προς ένα βαθμό, έχω<br>
δυσκολευτεί να βρω κάποιο πρότυπο πρόγραμμα. Ουσιαστικά θα είναι ο<br>
listener ενός server που θα δέχεται ένα μήνυμα και θα το αποθηκεύει σε<br>
βάση και θα κάνει και κάποιες άλλες λειτουργίες. Γνωρίζω πως θα κάνω τις<br>
λειτουργίες αλλά ψάχνω ένα τρόπο να φτιάξω το βασικό σκελετό του<br>
listener που θα είναι πάντα ενεργός.<br>
Εάν έχετε κάποια γνώση πάνω στο θέμα ή έχετε ένα απλό παράδειγμα ή έστω<br>
κάποια παραπομπή, ώστε να το δουλέψω μετά εγώ, θα το εκτιμούσα.<br>
<span class=""><font color="#888888"><br></font></span></blockquote><div><br></div><div>δύο βασικές προσεγγίσεις υπάρχουν:</div><div><br></div><div>α) να υιοθετήσεις κάποιου είδους παραλληλισμό που προσφέρει το λειτουργικό σύστημα, όπως threads ή forked processes (καλείς accept(2), το πρόγραμμα μπλοκάρει μέχρι να έρθει μια σύνδεση, αναθέτεις σε ξεχωριστό thread/process την διεκπεραίωση), και </div>
<div><br></div><div>β) να υιοθετήσεις ένα ασύγχρονο μοντέλο όπου οι ροές εκτέλεσης θα είναι "συνεργάσιμες" και θα παραδίδουν τον έλεγχο αυτόβουλα για να προχωρήσει η εκτέλεση των άλλων ροών (κάνεις επαναλαμβανόμενα select(2), poll(2) ή epoll(4) και ενδιαμέσως διεκπεραιώνεις τμηματικά την δουλειά από τις τρέχουσες συνδέσεις).</div>
<div><br></div><div>Εσύ έχεις κάποια από αυτές τις προσεγγίσεις κατά νου; Εάν όχι, ίσως θες να διαβάσεις πρώτα λιγάκι για αυτές για να διαλέξεις την κατάλληλη. </div><div><br></div><div>Δες εδώ ένα παράδειγμα με epoll(4):</div>
<div><br></div><div><a href="https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/">https://banu.com/blog/2/how-to-use-epoll-a-complete-example-in-c/</a><br></div><div><br></div></div><div><br></div>-- <br><div dir="ltr">
<div>|/ |/ Konstantinos <<a href="mailto:koukopoulos@gmail.com" target="_blank">koukopoulos@gmail.com</a>><br>|\ |\ Koukopoulos <<a href="http://kouk.surukle.me" target="_blank">http://kouk.surukle.me</a>><br>
<br>VSRE messages are welcome*, Thanks!<br></div><div>* for more information see: <a href="http://vsre.info" target="_blank">http://vsre.info</a> <br></div><div><a href="http://vsre.info/" target="_blank"></a></div></div>
</div></div>