Witam,
nigdzie nie moge znalezc odpowiedzi na pytanie ponizsze pytanie...
Pisze prosty komunikator po sieci LAN (serwer do ktorego moze podlaczyc sie kilku klientow i rozmawiac na wspolnym czacie). Mam 2 aplikacje okienkowe: serwer i klient... wszystko dziala ok, dopoki klient jest jeden... i tu jest problem. Wiem, ze rozwiazaniem jest wielowatkowosc na serwerze, ale chyba nie do konca rozumiem co ma byc odpalane w kolejnych watkach...?
Wg. mnie kazdy watek powinien tworzyc nowego socketa do ktorego moglby podlaczyc sie klient, tyle, ze tego drugiego socketa nie moge utworzyc, gdyz wywala się w nim bind z bledem... ze chce zbindowac drugi socket do tego samego ip a tak sie podobno nie robi...(jak stwierdzil msdn) ...wiec jak? Co ma robic kolejny watek, jesli socket ma byc tylko jeden?
Robie mniej wiecej tak:
- otwieram nowy watek, w nim po kolei startuje WSA, tworze nowy obiekt typu SOCKET, wywoluje bind, listen i async
- wykonuje ponownie punkt pierwszy z ta roznica, ze na async ustawiam wiadomosc WM_USER+1, ale wyskakuje mi blad jeszcze zanim tam dojde - przy bindzie
Dodam moze jeszcze, ze zarowno klient jak i serwer sa okienkowe, uzywam winsock2.h (chociaz builder ma jakies klasy do tego, ale ja chcialbym sie nauczyc to robic bez vcl'a), aplikacje dzialaja prawidlowo jesli jest tylko jeden klient (gdy drugi dolacza, wyrzuca tego pierwszego) i watki ---raczej--- tez nie sprawiaja problemu, bo sama watkowosc wyglada jakby dzialala (gdy zamiast tworzenia socketa wrzucam Sleep())
Prosze o pomoc w akcie desperacji, chociaz mam wrazenie ze odpowiedz jest banalna i powinienem na nia wpasc 2 dni temu...