Moderator |
|
Meestal is het de client die "vraagt" en de server die "reageert", maar een server zou af en toe ook kunnen pollen of een client nog actief is oid.
Als de server niet veel anders doet dan een client kun je misschien beter een soort van peer-to-peer opzet maken?
Ik heb ooit lang geleden een soort van client-server app opgezet voor een vak op de hogeschool. Wat ik mij daarvan herinner is dat de server een thread moet hebben die continue actief is en luistert naar binnenkomende connecties, volgens een vantevoren afgesproken protocol. Als een client op de goede manier een verbinding probeert te maken krijgt deze op de server zijn eigen thread toegewezen. Vervolgens kan er, wederom volgens een vantevoren afgesproken set regels, informatieuitwisseling plaatsvinden. Elke client bevindt zich op elk moment in een bepaalde toestand ("state"). Op grond van de toestand waarin de client zich bevindt, en de actie die deze uit probeert te voeren ("event"), zullen er op de server acties worden uitgevoerd en/of de client zal van toestand veranderen.
Er zijn op internet legio eenvoudige voorbeelden van server-client communicatie middels sockets te vinden. Mijn ervaring is dat je het meeste leert door er mee bezig te zijn. Als je enige kennis van / ervaring met JAVA hebt dan moet dit lukken; sockets zijn redelijk simpel onder de knie te krijgen. Alles er omheen (afhandelen van het totstand brengen van een verbinding, de informatieuitwisseling via een protocol en het verbreken van een verbinding) heeft wat meer voeten in de aarde. |