C# Server-Client(s) applikation

freak1051

Ensign
Registriert
Dez. 2012
Beiträge
198
Hallo Community,

ich sollte eine Anwendung bauen. Da mir Übung in C# gut tun würde, möchte ich diese in C# schreiben.

Funktionieren soll die Applikation in einem Netzwerk, in dem allerdings KEIN Windows/linux oder sonst irgend ein Server Läuft.

Funktionsweise Clients: Auf dem Client soll eine Zeitanzeige sein. Diese soll aus der Ferne (vom "Server-Tool") gestartet werden können. Unter der Zeitanzeige soll platz für Meldungen sein, die man per "Instant-Messaging" vom Server Tool an den Client schicken kann

Das Server-Tool soll mehrere Clients bedienen Können.

Als Beispiel:

An einem Rechner in einem netzwerk läuft das Server-Tool. Hier können Clients per Speichern von IP-Adressen hinzugefügt werden.
Es soll ein Eingabefeld geben, bei dem ich eine Zeit in Minuten eingeben kann, und per Knopfdruck an den Client geschickt werden. Als bsp. 15:00. Bei klick auf start soll der Timer Rückwerts zählen.
Im Server-Tool ist eine Textbox. Tippe ich hier einen Text ein, soll dieser per klick auf den ausgewählten Client geschickt werden.

Die Applikation an sich ist kein Problem. Im Prinzip geht es mit darum, eine Definierte Schnittstelle an die Clients zu übergeben. Angenommen 1 Byte an steuerbits, 1 Int für die Zeit und nen String für den Text. Die steuerbits kann ich dann nutzen um einen Bildwechsel am Client auszulösen oder die Uhr zu starten.

ganz simpel gesagt: Wenn Client 1 ausgewählt und btn1.Click dann löse bei client den Timer aus. Wenn Client 2 und btn5.click mache bei Client 5 einen Bildwechsel.

Hat hier jemand eine Idee, wie man sowas recht einfach programmiert?
 
Zuletzt bearbeitet:
Wie willst du eine Server-Client Anwendung bauen, wenn du keinen Server in deiner Infrastruktur besitzt? Oder verstehe ich da etwas falsch?
 
C# TCP/IP bzw. UDP/IP Stacks findest man mit 5 Sekunden googlen.
Die Clients bauen entweder ne TCP Verbindung zum Server auf oder lauschen passiv auf UDP Pakete.
Bei TCP hättest du den Vorteil, dass sich die clients beim Server melden, musst also keine manuelle IP-Liste führen.
Der Rest ist dann, wie du schon sagst, simples senden von Daten.
 
Um Konkreter zu werden:

Ich habe einen "verünftigen" PC und 10 Mini PC´s. Diese Hängen alle an einem Switch und befinden sich im gleichen Netzwerk. Der PC hat die IP 192.168.0.10, die miniPC´s 192.168.0.11-21.

In der Applikation auf dem PC (Server) soll ein Pull-Down Menü sein, in dem MiniPC 1 IP1, MiniPC2 IP2 usw. steht.

Hier kann ich dann auswählen mit welchem Client ich denn nun aktuell kommunizieren möchte ( komme aus der SPS welt.. stell mir des vllt etwas falsch vor oder erkläre es nicht korrekt, sry).

Die Maske unter dem Pulldown ändert sich nie. Da sind 8 Knöpfe, die einfach jeweils ein Bit in einem Byte darstellen. Funktion 1-8
da soll ein Eingabefeld sein, indem ich den Timer Vorbelgen kann, dann mit klick auf "senden" den Timer an den im Pulldown ausgewählten Client sendet.
Weiters ein Time Start -Knopf, der den Timer am ausgewählten Client Startet ( zählen soll der Client selbst um das Netzwerk zu entlasten)
Und zu guter letzt ist da ein Eingabe-Feld, in das ich schrieben kann " hallo hier ist dein persönlicher Helfer" mit klick auf senden Sendet er es mir auf den ausgewählten client und mit klick auf löschen cleart er mir den text auf dem Client wieder

Es gibt in diesem Netzwerk KEIN Server im sinne von Windows2000-haste-nicht-gesehen-Server, kein Linux-Server oder sonst was. Es gibt in diesem Netzwerk kein Internet, keine Firewall und ich habe Adminrechte auf jededem der PC´s und darf mit denen machen, was ich will... kurz gesagt ich habe keine (professionelle) IT, welche mir hier das leben evtl. Schwer macht.

was zuguter letzt die Funktionstasten machen, soll individualisiert auf den Client-PC´s gemacht werden. Es könnte sein dass auf dem Client1 die Funktionstaste 1 ein Wechsel des Hintergrundbildes in der App hervorruft, wobei bei Client 2 mit der Funktionstaste 1 ein Video angetriggert wird. Diese Intelligenz Obligt dann im Client. Es geht eigentlich nur darum die C#/WPF-Applikation auf den Client´s, eben in dem fall Mini-PC´s, fernzusteuern mit einer Applikation auf einem "Server" der in einem Anderen rau steht.
 
Alles nicht so kompliziert.

Eben mal das getestet:
https://www.codeproject.com/Articles/1415/Introduction-to-TCP-client-server-in-C

Funktioniert auf Anhieb. Muss man natürlich jetzt etwas aufbohren (keine festen IPs etc.) und statt Text andere Nutzdaten. Ist aber im Grunde nur ein paar if Statements. Wenn Butten X dann sende ABC auf "Server" Seite und auf Client Seite "Wenn Empfange ABC, dann mache das.
 
Zuletzt bearbeitet:
Was ist WCF?

@Nilson Das hört sich so mal gar ned schlecht an :D
 
Google? Windows Communication Foundation.

Zitat Wikipedia:
Die Windows Communication Foundation (WCF, früherer Codename Indigo) ist eine dienstorientierte Kommunikationsplattform für verteilte Anwendungen in Microsoft Windows. Sie führt viele Netzwerkfunktionen zusammen und stellt sie den Programmierern solcher Anwendungen standardisiert zur Verfügung.

Du definierst in Deinem Programm nur die Schnittstelle, wie die Netzwerkkommunikation geschieht konfigurierst Du grob gesagt nur, egal ob SOAP, binär oder sonstwas. Kannst Dir natürlich auch eigenes Protokoll schreiben, das dürfte aber in den meisten Fällen nicht nötig sein.
 
Zurück
Oben