Peer to Peer Verbindung zwischen mehreren Clients?

Status
Nicht offen für weitere Antworten.

facilityManager

Aktives Mitglied
Das hat mich schon immer mal interessiert: Wie funktioniert das mit dem Peer-to-Peer?

Ich möchte ein Programm schreiben, womit mehrere Leute zusammenarbeiten können. Person A geht online und macht eine "Session" als Host auf. Personen B und C gehen online, und sehen das es da ne hübsche Session von Person A gibt, der sie beitreten können. Also freuen sich Person B und C und treten der Session bei.

Können Java-Programme per Internet miteinander kommunizieren, wenn der Host-Rechner ein stink normaler Otto-Normal-Verbrauchs-Computer mit normalem Internetanschluss und sich ändernder IP ist, und kein Webserver in einem Rechenzentrum?
 
T

tuxedo

Gast
>> Wie funktioniert das mit dem Peer-to-Peer?

TCP und UDP ;-) Wikipedia hilft auch weiter ...

>> Ich möchte ein Programm schreiben, womit mehrere Leute zusammenarbeiten können. Person A geht online und macht eine "Session" als Host auf. Personen B und C gehen online, und sehen das es da ne hübsche Session von Person A gibt, der sie beitreten können. Also freuen sich Person B und C und treten der Session bei.

Das "finden" einer solchen Session ist "übers Internet" nicht ohne eine zentrale anlaufstelle, wo verzeichnet wird, dass es diese Session gibt, und wo alle neuen Clients nach einer Session "suchen", möglich. Sprich: In so einem Fall brauchst du sowas wie einen Webserver, RootServer oder ähnliches.

>> Können Java-Programme per Internet miteinander kommunizieren, wenn der Host-Rechner ein stink normaler Otto-Normal-Verbrauchs-Computer mit normalem Internetanschluss und sich ändernder IP ist, und kein Webserver in einem Rechenzentrum?

Jupp. Damit die Clients aber mit der regelmäßig wechselnden IP zurecht kommen und nicht jedesmal zum Telefon greifen müssen und sich nach der neuen IP des "Servers" erkundigen müssen, gibt es sogenannte "Dynamic DNS Server". Dort kann der Server sich eine Namensadresse geben lassen, welche dann von ihm immer mit der aktuellen IP auf den neusten Stand gebraucht wird.

--> www.dyndns.com

Kostet bei bis zu 5 solcher Adressen pro Account nix. Benutze ich selbst schon seit Jahren.

- Alex
 

facilityManager

Aktives Mitglied
Danke für die ausführlichen Infos! Baut man heutzutage noch Socketverbindungen von Hand, oder gibt es dafür empfehlenswerte Libs?
 
T

tuxedo

Gast
Hä? Wie? Von Hand? Du meinst mit Assembler oder wie?

Was du vermutlich meinst: Gibt es Libraries die weit genug von der Low-Level Socketverbindungen abstrahieren?

Wenn das die Frage war: Ja.

Jetzt irgendetwas aufzuzählen wäre zu viel des guten. Es gibt einfach zu viel. Du solltest wenn dann etwas konkreter mit deinen Anforderungen werden.

Nichts desto trotz, solltest du, bevor du irgendetwas anfängst, erstmal das Prinzip verstehen. In der Java-Insel ist das ganz gut erklärt. Sprich: Wie macht man einen Socketserver und wie macht man einen Socketclient.
Ist nict schwer, sind nur ein paar Zeilen, die es aber dennoch in sich haben können (wenn man von der Materie so gar keine Ahnung hat).

- Alex
 
T

tuxedo

Gast
Ja, das ist für den Einstieg nicht schlecht. Da ist auch gleich den multithreaed Server erklärt.

Wenn du das beherrschst, und weißt was du letztendlich mit der Anwendung machen willst, kannst du ja immer noch auf eine Library die auf einem höheren Level abstrahiert zurückgreifen.

- Alex
 

facilityManager

Aktives Mitglied
Funktioniert super mit dem Socket! Wie geht das denn, wenn Objekte übertragen werden sollen? Schätze mal die werden serialisiert und als String übertragen. Beispiel: Multiplayer-Game. Aber das ist ja erst ein fortgeschrittenes Thema, wenn ich mit dem Multithreading-Server durch bin :)
 
T

tuxedo

Gast
Du kannst mit dem ObjectInputStream und ObjectOutputStream ganze, serialisierbare Objekte serialisieren.

ABER: Wenn du wirklich performance haben willst, dann schickst du nicht ganze Objekte hin und her, sondern ausschließlich die daten, die wirklich von interesse sind. Hilfreich ist hierbei der DataInputStream und DataOutputStream. Damit sparst du dir den Rechenaufwand mit der Serialisierung sowie Bandbreite und Gewinnst an Performance.

Allerdings hast du zum "Nachteil" dass du dich selbst drum kümmern musst was wie und wo geschickt wird, und musst dir somit ein etwas aufwendigeres Protokoll überlegen.

Wenn du aber mal tief genug eingestiegen bist in die Materie, kannst du dir ja mal "Project Darkstar" von Sun anschauen. Nix für ungut, aber das wird wohl noch ne Weile dauern bis du soweit bist (ist kein leichtes Thema, zumal die Doku doch noch etwas dürftig ist...)

- Alex
 

facilityManager

Aktives Mitglied
Project Darkstar habe ich mal gesehen. Verstand aber nicht so richtig, worum es geht.

An der Serialisierung ist was dran. Es wird auch gesagt, das die Serialisierung von Objekten Probleme machen kann. Dann doch lieber ein eigenes Protokoll.

Zunächst spiele ich mit dem Gedanken ein ganz einfaches Multiplayer-Game zu realisieren. Vom Konzept her dient StarCraft als Vorbild. Da muss ich erst ein paar Dinge evaluieren.
Etwa die Synchronisation der Gameloop mit allen Teilnehmern;
Behandlung von Lags (Übertragungsprobleme / Aussetzer);
Map;
Bewegungs- und Navigationsalgorithmen (Einheiten müssen sich dem Gelände und Hindernissen entsprechend automatisch von A nach B bewegen; Oder es gibt erstmal nur Lufteinheiten...lol);
JMonkey für grafische Effekte;

Ansonsten soll es 2D sein, mit "Pseudo-3D Effekt", der durch die Reihenfolge der Zeichnung realisiert wird.

Soviel zum Übungsprojekt ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
x46 Connection reset by peer: socket write error Netzwerkprogrammierung 6
T Peer-to-Peer Anwendung Netzwerkprogrammierung 2
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
G Exception: Connection reset by peer: socket write error Netzwerkprogrammierung 2
IT-MaD Connection reset by peer: socket write error Netzwerkprogrammierung 2
F peer to peer Netzwerkprogrammierung 2
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
D Verbindung zu Geräten mit gleicher IP aber in unterschiedlichen VLans aufbauen Netzwerkprogrammierung 2
M Socket Socket lehnt Verbindung ab Netzwerkprogrammierung 3
IAmFloppy Socket Nachstellen der Verbindung Netzwerkprogrammierung 6
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
S Bluetooth Verbindung zwischen Android app und Raspberry Pi 3 Netzwerkprogrammierung 1
S Peer2Peer Verbindung trotz NAT Netzwerkprogrammierung 2
T VPN-Verbindung über Java Netzwerkprogrammierung 4
Aruetiise Socket Verbindung Überprüfen Netzwerkprogrammierung 18
F Socket Verbindung mit Verschlüsselung und Authentifierzung Netzwerkprogrammierung 1
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
U Client Soap Verbindung wieder schließen Netzwerkprogrammierung 0
M Verbindung zwischen zwei Pc in dem Selben Netzwerk Netzwerkprogrammierung 8
P Socket Socket-Verbindung Input sehr langsam Netzwerkprogrammierung 1
S FTP Verbindung zu einem BS2000 Großrechner mit Commons Net Netzwerkprogrammierung 0
F Einfache Socket Verbindung Netzwerkprogrammierung 2
F Verbindung zwischen Server und handy Netzwerkprogrammierung 1
M TCP Verbindung Byte-weise lesen? Netzwerkprogrammierung 5
Shams Problem mit Eventbus in Verbindung mit Server Netzwerkprogrammierung 0
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
F TCP Client, verbindung aufrecht halten Netzwerkprogrammierung 0
I Swing hängt sich auf bei Verbindung zum Server Netzwerkprogrammierung 3
P RMI Hohe CPU Last RMI Verbindung Netzwerkprogrammierung 4
J Pc - Handy Verbindung? Netzwerkprogrammierung 3
M Socket 2x Proxy multithread-server mit Cross Verbindung Netzwerkprogrammierung 0
T Verbindung zum Server fehlgeschlagen Netzwerkprogrammierung 7
D Einfache Verbindung zu Linux Server und Datei auslesen Netzwerkprogrammierung 13
B Nach Verbindung gleich ObjectStream empfangen Netzwerkprogrammierung 1
R Dauerhaft offene Socket-Verbindung? Netzwerkprogrammierung 3
P server - client verbindung (anfänger) Netzwerkprogrammierung 8
G Socket Socket verbindung für Chat System Netzwerkprogrammierung 3
S Socket Socket Verbindung wiederherstellen Netzwerkprogrammierung 16
T Socket Bidirektionale Verbindung mit Sockets Netzwerkprogrammierung 8
N (TCP) Verbindung ohne Portforwarding Netzwerkprogrammierung 12
N Lan-Verbindung erstellen Netzwerkprogrammierung 2
H Socket Java Chat - Verbindung zum Server fehlgeschlagen. Netzwerkprogrammierung 5
A TCP über UDP Verbindung? Netzwerkprogrammierung 10
D TCP Verbindung (Java Client und Visual Basic Server) Netzwerkprogrammierung 12
E Verbindung zu SQL-Datenbank auf einem Server Netzwerkprogrammierung 13
S Socket Applet Client bekommt keine GLOBALE Verbindung zum Server Netzwerkprogrammierung 25
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
V NullPointerException bei Verbindung zu RabbitMQ-Server Netzwerkprogrammierung 4
B FTP commons net verschlüsselte verbindung Netzwerkprogrammierung 11
C Verbindung zu einem Hostrechner über das Internet herstellen Netzwerkprogrammierung 15
T Socket Client versucht zyklische Verbindung zum Server Netzwerkprogrammierung 4
X Über eine Socket-Verbindung Arrays übergeben Netzwerkprogrammierung 5
P Socket Verbindung über das Internet Netzwerkprogrammierung 2
A Socket Socket Verbindung unterbrochen --> keine Exception Netzwerkprogrammierung 7
S SVNKit - Verbindung zum Repository trennen? Netzwerkprogrammierung 2
P Socket neuer Client - neue(r) Socket/Verbindung geöffnet? Netzwerkprogrammierung 6
M Problem mit Socket-Verbindung Netzwerkprogrammierung 2
X SSH Verbindung zu Remote Datenbank Netzwerkprogrammierung 2
S TCP Verbindung zu Beamer Netzwerkprogrammierung 8
Y server client socket verbindung übers internet aufbauen Netzwerkprogrammierung 8
M ganymed-ssh2.har: ftp-Verbindung über ftp-Proxy Netzwerkprogrammierung 2
D Verbindung zw. zwei Rechnern funzt nicht Netzwerkprogrammierung 5
F Socket Socket Verbindung Netzwerkprogrammierung 10
E Server schließt einfach verbindung? Netzwerkprogrammierung 6
Shoox VPN-Verbindung für Datenbankzugriff Netzwerkprogrammierung 2
X Socket Handy/PC Verbindung unterscheiden Netzwerkprogrammierung 18
O Telnet verbindung Netzwerkprogrammierung 4
Dit_ UDP Verbindung durch Proxy Netzwerkprogrammierung 4
H Socket Client server,verbindung läst sich nicht abbauen&code optimierung Netzwerkprogrammierung 3
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
M HTTP HTTPS-Verbindung mittels Java und Javascript Netzwerkprogrammierung 2
N Verbindung zu Fritzbox Socket/Telnet ??? Netzwerkprogrammierung 5
multiholle RMI Verbindung Linux <-> Windows Netzwerkprogrammierung 4
S netzwerkprotokoll auf basis einer tcp verbindung erstellen Netzwerkprogrammierung 9
S SSH Verbindung mit j2ssh Netzwerkprogrammierung 3
H Socket Mit Applet Verbindung zu eigener Website aufbauen Netzwerkprogrammierung 4
H Socket Socket verbindung mit einem TeamSpeak2 Server Netzwerkprogrammierung 5
H TCP verbindung hinter NAT Netzwerkprogrammierung 28
G TCP SSL Verbindung Netzwerkprogrammierung 3
P Java / My-Sql Verbindung herstellen Netzwerkprogrammierung 6
W Socket Shellscript über ssh Verbindung aufrufen Netzwerkprogrammierung 14
N Socket Verbindung wird immer verweigert Netzwerkprogrammierung 5
Dit_ UDP-Verbindung, DatagramPakete Netzwerkprogrammierung 3
S Socket verbindung trennen Netzwerkprogrammierung 3
D Verbindung zu einem Server - POST Netzwerkprogrammierung 2
musiKk SSL-Verbindung mit Client-Zertifikat (Private Key) scheitert Netzwerkprogrammierung 13
D Socketprogrammierung Verbindung C++=>Java Netzwerkprogrammierung 23
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
T Mac Adresse über Socket Verbindung abfragen? Netzwerkprogrammierung 9
L SSL Verbindung aber Server wird erst im Programm festgelegt Netzwerkprogrammierung 4
L Https Verbindung wird aus jar heraus nicht aufgebaut Netzwerkprogrammierung 12
M Verbindung über Proxy// Problem mit Outputstream bei URLConn Netzwerkprogrammierung 5
O TCP Socket-Verbindung überprüfen Netzwerkprogrammierung 4
F applet verbindung zum server Netzwerkprogrammierung 6
T Verbindung über das Internet Netzwerkprogrammierung 2
G Verbindung zwischen PC und Handy Netzwerkprogrammierung 10
B Bibliothek, um Eckdaten zur Internet-Verbindung rauszufinden Netzwerkprogrammierung 2
C Verbindung zwischen 2 Computern herstellen Netzwerkprogrammierung 12

Ähnliche Java Themen

Neue Themen


Oben