# client server mit nur einem PC



## jabaduu (22. Jun 2019)

Ich möchte mich mit Netzwerkprogrammierung beschäftigen, ich möchte Clients und Server schreiben die auf verschiedenen PCs laufen sollen.
Problem ist, ich habe nur einen PC , wie könnte ich die dann testen? Kann man da Emulatoren benutzen oder irgendwas, oder muss man auf jeden Fall
zwei PCs haben?


----------



## mihe7 (22. Jun 2019)

Du könntest Dir auf dem PC mehrere VMs installieren oder Du verwendest Container wie z. B. Docker.


----------



## kneitzel (22. Jun 2019)

Es spricht auch nichts dagegen, alles auf einem System laufen zu lassen. Server und Client. Das sollte kein Thema sein. (Und dann wird z.B. localhost bzw 127.0.0.1 als Serveradresse angegeben.)


----------



## mihe7 (22. Jun 2019)

Ach so, falsch verstanden. Ich dachte, er wollte auf verschiedenen Systemen testen. Klar: Server- und Clientprogramme können auch auf dem gleichen Rechner ausgeführt werden.


----------



## jabaduu (24. Jun 2019)

Danke


----------



## jabaduu (1. Jul 2019)

Nach meinem Verständnis ist dies keine Peer to Peer Anwendung, sondern einfach eine Client/Server Anwendung.
https://steemit.com/utopian-io/@lap...eer-network-with-java-programming-on-netbeans 

Versteh ich da was falsch?


----------



## M.L. (1. Jul 2019)

Vgl. mit https://de.wikipedia.org/wiki/Peer-to-Peer "(..)In einem reinen _Peer-to-Peer-Netz_ sind alle Computer gleichberechtigt und können sowohl Dienste in Anspruch nehmen, als auch zur Verfügung stellen. (..)"  ist es eine P2P-Anwendung. Obwohl die formelle Unterscheidung bei einem Rechner egal sein dürfte...


----------



## jabaduu (1. Jul 2019)

ok. Ich dachte halt dass dann auf jedem PC das exakt gleiche Programm läuft, aber in dem Beispiel lauft auf PC1 ein Programm, und auf PC2 ein leicht modifiziertes. Aber das verletzt wohl die Kriterien der Definition nicht?!


----------



## Dukel (1. Jul 2019)

In einem Peer2Peer Netzwerk bzw. bei Peer2Peer Software laufen auf allen Maschinen die gleiche Software und alle haben sowohl die Client als auch Server Komponenten aktiv.
Es muss immer eine Client/Server Verbindung sein, aber in einem Peer2Peer System ist jeder Client und jeder Server.


----------



## jabaduu (2. Jul 2019)

ja genau, so war mein Verständnis davon.


----------



## jabaduu (2. Jul 2019)

Ich versuche jetzt eine VM zu installieren. Problem: ich habe keinen product key. Ich habe einen Laptop gekauft auf dem windows 8 
installiert war, ich habe im Laden gefragt, ob ich denn keinen key bekomme, aber die meinten nein, weil das Betriebssystem auf meinem Rechner installiert ist. Ich habe dann kostenlos auf Windows10 upgedatet. Wie kann ich nun Windows 8 oder 10 in der VM installieren?


----------



## jabaduu (2. Jul 2019)

jabaduu hat gesagt.:


> Ich versuche jetzt eine VM zu installieren. Problem: ich habe keinen product key. Ich habe einen Laptop gekauft auf dem windows 8
> installiert war, ich habe im Laden gefragt, ob ich denn keinen key bekomme, aber die meinten nein, weil das Betriebssystem auf meinem Rechner installiert ist. Ich habe dann kostenlos auf Windows10 upgedatet. Wie kann ich nun Windows 8 oder 10 in der VM installieren?


ACHSO QUARK! VERGESST DIE FRAGE!!


----------



## mihe7 (2. Jul 2019)

Du kannst das auch lokal testen, indem Du einfach verschiedene Ports verwendest.


----------



## kneitzel (2. Jul 2019)

Dukel hat gesagt.:


> In einem Peer2Peer Netzwerk bzw. bei Peer2Peer Software laufen auf allen Maschinen die gleiche Software und alle haben sowohl die Client als auch Server Komponenten aktiv.
> Es muss immer eine Client/Server Verbindung sein, aber in einem Peer2Peer System ist jeder Client und jeder Server.



Also hier bitte nicht verwirren lassen! Natürlich kommt es nicht auf die genau gleiche Software an!
Die großen p2p Applikationen gibt es in vielen Varianten und es spielt keine Rolle, welche Variante genutzt wird,

==> Es kommt also auf die Architektur des Systems an. Wer reden mit wem?

Bei einer Client / Server Architektur verbinden sich klar definierte Clients mit Servern. Es gibt dann ein Protokoll, welches die Rollen auch meist klar vorgibt. (Client verbindet sich zum Server)

Bei Peer to Peer ist es so, dass es entweder keine dedizierten Server mehr gibt oder dass die Clients sich auch direkt unterhalten können.

Wichtig ist mir hier auch, dass man sich auch nicht durch den Begriff Server verwirren lässt. Auch ein einem peer to peer Netzwerk kann es Server geben. Server ist halt genereller definiert als etwas, das Dienste oder Daten bereitstellt... (Exakter bitte auf https://de.wikipedia.org/wiki/Server nachlesen!)
So kann man eine p2p Tauschbörse sehen: Hier unterhalten sich die einzelnen Teilnehmer direkt um Daten auszutauschen.
=> Aber wenn ich jetzt eine große Datei nur bereit stellen will, dann bin ich nach der Definition von Wikipedia eigentlich ein Server. Aber aus Architektur-Sicht bin ich dann nur ein Teilnehmer wie jeder andere. Ich könnte ja auch Daten von anderen Teilnehmern anfordern....

Somit wird hoffentlich deutlich, dass es um die Architektur geht. Nicht um die konkrete Implementierung.


----------



## Dukel (2. Jul 2019)

kneitzel hat gesagt.:


> Somit wird hoffentlich deutlich, dass es um die Architektur geht. Nicht um die konkrete Implementierung.



Aus der Architektur muss ja irgendwann die Software geschrieben werden und dort braucht man auch in einer P2P Software Clients und Server.
In einem P2P System ist eben jeder Teilnehmer Client _und_ Server.


----------



## jabaduu (2. Jul 2019)

Eine andere Frage zwischendurch: ich habe jetzt meinen product key ausgelesen von dem Windows das gerade auf meinem
Rechner läuft. Aber den kann ich nicht verwenden um Windows auf der VM zu installieren oder?!
Ja ich weiss ich muss keine VM installieren und kann lokal testen, aber ich möchte es einfach wissen.


----------



## kneitzel (2. Jul 2019)

Also du hast eine Lizenz und diese darfst Du nur einmal verwenden. Wenn Du diese schon auf dem Rechner selbst laufen hast, dann darfst Du diese keine zweites Mal (z.B. in der VM) verwenden (Ich schließe einmal aus, dass Du eine Enterprise Lizenz hast, da ist wohl auch die Nutzung in bis zu 4 VMs mit drin...).

Technisch ist sollte es möglich sein, auch eine VM damit aufzubauen.


----------



## jabaduu (2. Jul 2019)

ok Danke für die schnelle Antwort. Tja das dachte ich mir schon. Ich werde dann Ubuntu installieren. In der VM.


----------



## jabaduu (2. Jul 2019)

kneitzel hat gesagt.:


> Technisch ist sollte es möglich sein, auch eine VM damit aufzubauen.


Was meinst Du damit? Also mit einem key+ windows kann ich eine vm aufbauen oder meinst Du damit es geht auch ohne key?


----------



## mrBrown (2. Jul 2019)

Sollte dafür nicht eine VM von Microsoft nutzbar sein? https://developer.microsoft.com/de-de/windows/downloads/virtual-machines


----------



## kneitzel (3. Jul 2019)

Also wenn Du einen gültigen Key hast, dann kannst Du Windows zur Not herunter laden und dann installieren. Das ist eine technische Möglichkeit, die Microsoft bietet. Das ändert aber nichts daran, dass dies nicht legal ist.

Für kurzfristige Tests sind die VMs aber durchs nützlich, auf die mrBrown verwiesen hat. Aber wichtig: diese VMs laufen in spätestens 90 Tage ab! (Teilweise deutlich früher - 21.08 stand eben auf der Webseite.)


----------



## jabaduu (4. Jul 2019)

mrBrown hat gesagt.:


> Sollte dafür nicht eine VM von Microsoft nutzbar sein? https://developer.microsoft.com/de-de/windows/downloads/virtual-machines


Danke!!


----------



## jabaduu (12. Jul 2019)

Ich hab die virtual machine installiert die Mr.Brown paar Posts weiter vorne vorgeschlagen hat. https://developer.microsoft.com/de-de/windows/downloads/virtual-machines
Wie kann ich damit Java programmieren?
Die Maschine kommt mit Visual Studio für .NET.  Ich kapiert es nicht, ich finde auch nichts dazu, gibt's da eine Möglichkeit Java hinzuzufügen? Oder kann man da einfach Eclipse installieren? Ich hatte es versucht, aber die Maschine ist dann abgestürzt.


----------



## M.L. (12. Jul 2019)

Für Java-Programmierung installiert man idR auch ein JDK, z.B. das OpenJDK: https://openjdk.java.net/install/   Erst danach anderes Werkzeug wie Eclipse.


----------



## jabaduu (12. Jul 2019)

M.L. hat gesagt.:


> Für Java-Programmierung installiert man idR auch ein JDK, z.B. das OpenJDK: https://openjdk.java.net/install/   Erst danach anderes Werkzeug wie Eclipse.


OK. Hast Du diese Virtual machine zufällig schon Mal benutzt? Und das klappt dann?


----------



## jabaduu (12. Jul 2019)

Also einmal für Blöde  Ich kann in der VM einfach das JDK installieren und dann Eclipse. Ganz normal wie auf dem laptop auch. Ich Versuche es aber das dauernd soll lange.. ich muss einen schnelleren Rechner besorgen.


----------



## Dukel (12. Jul 2019)

Wieso machst du das in einer Vm und nicht auf deinem Rechner?


----------



## jabaduu (12. Jul 2019)

Dukel hat gesagt.:


> Wieso machst du das in einer Vm und nicht auf deinem Rechner?


Ja das kann ich machen, aber ich möchte das einfach auch hinkriegen mit der VM.


----------



## Dukel (12. Jul 2019)

Was willst du in der VM machen? Das Program laufen lassen oder programmieren?
Bei ersterem brauchst du nur die Java Runtime und keine IDE.


----------



## jabaduu (12. Jul 2019)

Nein will Java programmieren.


----------



## mrBrown (12. Jul 2019)

jabaduu hat gesagt.:


> Nein will Java programmieren.


Willst du *in* der VM programmieren? Programmieren kannst du auch einfach aufm Host...


----------



## jabaduu (12. Jul 2019)

mrBrown hat gesagt.:


> Willst du *in* der VM programmieren? Programmieren kannst du auch einfach aufm Host...


Ja das macht Sinn.
OK kann erst Sonntag wieder an meinen Rechner. Dann werde ich die Java Runtime installieren.


----------



## jabaduu (26. Jul 2019)

Ok Danke Leute. Es hat alles geklappt. Habe jetzt ein paar kleine Client Server Anwendungen geschrieben.


----------



## mrBrown (26. Jul 2019)

Mit Multithreading gehts hier weiter: https://www.java-forum.org/thema/multithreading.185490/


----------

