Προς το περιεχόμενο

Sockets - Threads


papalive

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα και καλή Ανάσταση.

 

Παιδιά θα ήθελα οποιος ξέρει να μου πει συμβαινει με τα sockets και με τα threads στην C++.

Δηλαδή πως μπορω να τα χρησιμοποιησω σε μια chat εφαρμογη.

 

Η σκέψη μου είναι η εξής:

 

Απο την μία πλευρά ( ας το πώ! ) θα είναι ο sever ο οποίος θα έχει δημιουργήσει ενα socket.

Απο την άλλη θα είναι ο client ο οποίος και αυτός θα δημιουργεί ενα socket και μεταξύ τους ουσιαστικά θα ανταλλάσει ο ένας το socket του αλλου με αποτέλεσμα να επικοινωνούν.

 

Τα threads ομως και εδω εχω αγνοια θα τα χρησιμοποιώ σε συνδιασμό με το socket του server ? Δηλαδή πρέπει να υπάρχει ενα socket για να δημιουργήσω threads ωστε να εξυπηρετούν κάθε "κλήση" του client ή αρκεί να εχω μόνο threads ?

 

Επίσης αντί να χρησιμοποιώ threads δεν θα μπορούσα να φτιάξω ενα νέο socket για κάθε νέο client ?

 

Γενικότερα ζητάω τα φώτα σας για να μπρέσω να δώ και εγω γιατι χανομαι στα σκοτάδια και στο διαδικτυο.

 

Γενικότερα αν εχετε και κανένα tutorial ( προτιμώ στα Ελληνικά ) να μου προτείνετε..

η τουλάχιστον να μου πείτε ποιές εντολές χρησιμοποιούμε για τα παραπάνω.Τέλος να ενημερώσω πως εχω ηδη φτιάξει εφαρμογή server - client αλλά ο server μπορεί να εξυπηρετήσει μόνο ενα client με την χρήση socket οπότε και θα ήθελα να επεκταθώ περισσότερο.

 

Ευχαριστώ.

Δημοσ.

Διάβασε λίγο ένα πρόσφατο thread

http://www.insomnia.gr/forum/showthread.php?p=3213205.

Ίσως έχει πληροφορίες που σε βοηθήσουν.

Είμαι βέβαιος ότι στο Insomnia θα υπάρχουν πολλά σχετικά θέματα (δεν έκανα αναζήτηση, είμαι σε mobile συσκευή και ζορίζομαι με το multitasking ;p).

Δημοσ.

Ειχα κανει κατι παρομοιο σε C me WinAPI...Η λογικη ηταν μολις παρει ενα κανουργιο request ο server να δημιουργησει ενα καινουργιο thread. Δυστηχως ο κωδικας υπαρχει σε ενα pc που ειναι σε κομματια!!!

Δημοσ.
Ειχα κανει κατι παρομοιο σε C me WinAPI...Η λογικη ηταν μολις παρει ενα κανουργιο request ο server να δημιουργησει ενα καινουργιο thread. Δυστηχως ο κωδικας υπαρχει σε ενα pc που ειναι σε κομματια!!!

 

Πρέπει οποσδήποτε να δημιουργεί νέο thread ??

αν δημιουργήσει νέο socket τι θα γίνει ?? θα εχω πρόβλημα?

 

και κανένα οδηγό για threads ρε παιδιά εχω φάει ολο το internet και ολα ειναι σκορποχωρι ασε..

Δημοσ.
και κανένα οδηγό για threads ρε παιδιά εχω φάει ολο το internet και ολα ειναι σκορποχωρι ασε..

Σε WinAPI κάπως έτσι:

 

>
DWORD WINAPI ToThreadSou(LPVOID something)
{
..........
return 0;
}
..........
DWORD dwThreadId;
HANDLE hThread;
hThread = CreateThread(NULL, 0, ToThreadSou, something, 0, &dwThreadId);
if(hThread == NULL) MessageBox(hwnd, "CreateThread failed.", "Aborted", MB_OK|MB_ICONERROR);
CloseHandle(hThread);
..........

Δημοσ.

Το thread θα αναλαβει να εξυπηρετησει τo request του client ;) και οχι το socket. Το socket ειναι απλα ο μηχανισμος επικοινωνιας μεταξυ server-client

Δημοσ.
Το thread θα αναλαβει να εξυπηρετησει τo request του client ;) και οχι το socket. Το socket ειναι απλα ο μηχανισμος επικοινωνιας μεταξυ server-client

 

Καλή η παρατήρηση !!!

 

Κώδικα ετοιμο που μπορώ να βρώ αν γνωρίζεις ή tutorial?

Δημοσ.

Ωραία!!! σημερα αυτη ειναι η δουλεια μου,

 

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

 

thanks!

Δημοσ.

θα ξεκινησεις ενα νεο thread το οποιο θα ανοιγει το server socket και θα επικοινωνει με τον client

Δημοσ.

Αυτό συμβαίνει λόγω blocking πολιτικής. Αν διαβάσεις το πρώτο μου post θα πάρεις μια ιδέα και για προηγούμενες απορίες που είχες. Δεν είναι ανάγκη να φτιάξεις νέο thread αν δε σου είναι απαραίτητο ή αν σου φαίνεται πολύπλοκο.

Δημοσ.

Σωστα.Δηλαδη απο την στιγμη που θα γίνει η επ/νια με τo Socket θα πρέπει να εκτελεστει η create_thread ωστε να περιμένει νέα συνδεση απο άλλο client.

Δημοσ.

Θα στο ζωγραφισω, γιατι με τα λογια ειναι δυσκολο να το εξηγησεις.

post-103086-129063079013_thumb.jpg

 

υγ: Και στο client side μπορεις να βαλεις thread για να μη κολλαει το gi σου.

υγ2: windows και "socket thread" δεν κολλαει. Καλυτερα να ψαχτεις για OS level async socks.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...