Ponieważ planujesz TCP (ponieważ chcesz stan), musisz opracować strategię. Dostaniesz mnóstwo informacji o nawiązywaniu połączenia i przenoszeniu pewnych danych tam iz powrotem. Google da Ci więcej niż możesz obsłużyć. Bez wykonywania całej pracy, oto kilka kroków, aby zorientować się.
1) Rejestracja połączenia - Kiedy klient przychodzi online i chce się komunikować z serwerem, najpierw musi powiedzieć "Hej, jestem tutaj i chcę odgrywać rolę kostki". Ten początkowy handshake może być identyfikatorem połączenia używanym do bicia serca i/lub transakcji. Serwer użyje tego do identyfikacji danych i odpowiedniego wątku, jeśli jest otwarty.
2) Heart Beat - Teraz, gdy klient zarejestrował się na serwerze, klient odpowiada za bicie serca, mówiąc, że wciąż tam jest i nadal planuje kontynuować pracę. Zazwyczaj co 3 - 10 sekund jest dobre.
3) Opracuj protokół żądania/odpowiedzi - w przypadku "każdego polecenia" odbędzie się formalny proces. Ten formalny proces będzie zawierał identyfikator połączenia, ale także identyfikator żądania. Klient nie zaakceptuje odpowiedzi, dopóki nie otrzyma odpowiedniego identyfikatora żądania. Co więcej, każde żądanie będzie wymagać odpowiedzi powodzenia lub niepowodzenia w celu określenia, czy jest zgodne z interfejsem API, czy też nie. W ramach żądania będzie polecenie lub akcja do wykonania.Niektóre osoby używają int do wysyłania identyfikatora polecenia, a następnie użyj przełącznika na id, aby wywołać metodę punktu wejścia (cmd id = 1 to connect(), cmd id = 2 to rolldice(), itp.). Możesz dołączyć dodatkowy ładunek, który identyfikuje wynik z polecenia.
Krótko mówiąc, 1 to uścisk dłoni, 2 to podtrzymanie, a 3 przekazanie danych w tę iz powrotem.
Teraz, czy użyć gniazda lub WCF, polecam mieć podstawową wiedzę na temat programowania TcpClient, a następnie uruchomić z WCF. Będziesz zaskoczony, jak proste jest programowanie w gniazdach, ale koszty ogólne są mordercze. Nic nie można zastraszyć. Dużo pracy wymaga koordynowania połączeń, wątków i nie wspominając o bezpieczeństwie. Z drugiej strony WCF usuwa część tego kosztu.
chciałbym sprawdzić to pytanie ...
How to use socket based client with WCF (net.tcp) service?
Podpowiedź: Nie ufaj klientów. Zwykle klient powinien poprosić serwer o rzucenie kostką, a serwer wyśle walcowaną wartość do wszystkich klientów. –
Proponuję zajrzeć do WCF. Doskonałą książką dla początkujących w WCF jest [Krok po kroku WCF] (http://shop.oreilly.com/product/0790145302403.do). Możesz przeczytać z wyprzedzeniem przykład klienta Chat, jeśli chcesz poznać szczegóły na temat tego, co próbujesz zrobić. Wcf uprości także proces autoryzacji. – Garvin