Winsock - serwer wielowątkowy w C - klient w C++

0

Witam!
Mam za zadanie napisać grę turową. Zrobiłem serwer wielowątkowy, który po podłączeniu się klienta, przypisuje mu wątek, i w pętli while odbiera od niego komunikat. Chodzi mi oto, żeby zrobić tak, że po podłączeniu drugiego klienta, serwer odbiera na zmiane komunikaty, raz od jednego, raz od drugiego.
Klient jest zrobiony w visual c++, póki co, jest przycisk 'Połącz', 'Rozłącz', i 'Wyślij'. Wszystko działa tak jak powinno, jeżeli klienci wysyłają komunikaty kiedy im się podoba, a mi zależy, że zrobić to na zasadzi tury.

Podpowie mi ktoś? Jakieś sensowne rozwiązanie. Wspomnę tylko, że w Visual c++ dopiero zaczynam, natomiast w C jestem w miare obyty.

Z góry dziękuję za odpowiedź! ;)

0

Zrób mechanizm powiadamiania klienta że może znów nadawać. Dopiero jak serwer obsłuży wiadomość od jednego klienta pozwala drugiemu nadawać. Ew jak to ma być turówka to nie wiem czy wątki maja tu specjalnie sens...

0

a co zamiast wątków proponujesz? naprawdę każda wskazówka ma dla mnie duże znaczenie. ;)

0

Chyba chodziło mu o to, że skoro to ma być gra turowa, to nie ma potrzeby, żeby serwer w tym samym czasie odbierał pakiety od dwóch klientów, a co za tym idzie, nie potrzebujesz chyba korzystać z wątków. Wystarczy, że komunikacja będzie się odbywała liniowo.

0

Tak, tylko w moim wypadku ma być coś takiego, że gra ma być dla 4 osób. Po podłączeniu się 4 osób, serwer losuje pary, następnie odbywa się turniej. Wygrani grają z wygranymi, przegrani z przegranymi. Za cholere nie mogę sobie wyobrazić jak to skonstruować...

0

@sothisguy a jaki widzisz problem? Masz jeden wątek serwera który zajmuje się układaniem par i tworzeniem wątków związanych z konkretną "grą". Każdy z tych nowych wątków zajmuje się parą graczy.

0

Okej, trochę mi rozjaśniłeś. Ale jak w wątku mam zrobić tak, żeby najpierw odbierał od jednego, a potem od drugiego. To mnie nurtuje. Jakiś schemat może? :)

0

o_O? Masz dwa sockety. Czytasz z pierwszego. Następnie czytasz z drugiego i jak odczytasz z drugiego to wysyłasz na pierwszy informację ze już wolno znów wysyłać. I tak dalej. W kliencie umożliwiasz wysłanie nowej wiadomości dopiero kiedy dostaniesz pozwolenie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1