# Instantmessenger mit Java



## ManuP (12. Sep 2007)

Hallo Leute,

ich würde gerne einen Instant-Messenger (mit eigenem Protokoll) in Java programmieren. Ich bekomme auch Unterstützung von zwei Freunden, sodass sich der Aufwand etwas verteilt.

Vorweg: ist so was mit Java überhaupt möglich? 

In dem Buch: Java ist auch eine Insel (http://www.galileodesign.de/openbook/javainsel5/javainsel16_007.htm#Rxx747java160070400063A1F03F100) habe ich folgendes gelesen:



> Ein Server kann nur auf unserem Rechner gestartet werden. Ist der Rechner vom Internet aus erreichbar, können externe auf ihn zugreifen. Anders sieht es aus, wenn der Rechner eine Internet-Adresse hat, die von außen nicht sichtbar ist, weil er zum Beispiel über einen Router ins Internet geht. Dann vergibt dieser Router eine eigene Adresse – die oft mit 192.168 oder 10 beginnt – und setzt sie per NAT um, sodass unsere private Adresse außen verborgen bleibt. Die Frage ist nun, ob wir trotzdem einen Serverdienst anbieten können.



Nun ist es aber so, dass z.B. icq auch durch einen router hindurch läuft, oder msn oder sonst was. Das ist aber ja nur der Client. und dieser darf auf irgendeinen Server im Internet zugreifen, sodass nur der Server die entsprechenden Routereinstellungen braucht.

Wir wollen jedoch einen Instant Messenger programmieren, der den Server nur zum connecten (tausch der ip adressen) benötigt, un dann eine peer-to-peer verbindung aufbaut. Das alles natürlich verschlüsselt etc.

Nach was sollte ich (um das Projekt umsetzten zu können) schauen? Schlüsselwörter etc.

Wenn jemand mitarbeiten möchte: PN.

Vielen Dank,
Manu


----------



## tuxedo (12. Sep 2007)

Schlüsselwort:

- NAT
- Port Forwarding
- UDP Hole Punching
- P2P Architektur

BTW: Wieso noch einen Instant Messenger? Was kann denn euer IM was andere nicht können? Wenns nur um "lästige Werbung" in ICQ geht: Kennst du "Jabber"?

Gruß Alex


----------



## Wildcard (12. Sep 2007)

Zunächst mal:
Warum in Gottes Namen sollte das mit Java nicht möglich sein?  ???:L 

Eine Möglichkeit besteht zum Beispiel im UPD Hole Punching.
http://en.wikipedia.org/wiki/UDP_hole_punching


----------



## tuxedo (12. Sep 2007)

Wildcard hat gesagt.:
			
		

> Zunächst mal:
> Warum in Gottes Namen sollte das mit Java nicht möglich sein?  ???:L



Ja, das hab ich mich eigentlich auch gefragt. Ich mein: Wenn so wenig von Java weiß -> Wie gut stehen da die Chancen dass das Projekt in absehbarer Zeit ein brauchbares Ergebnis liefert?

Oder geht's hier mehr um den Lerneffekt?


----------



## ManuP (12. Sep 2007)

@alex0801: Ja, ich kenn Jabber. Nutze ja selbst Linux auf meinen Rechner --> licq (als icq client, der ist auch ohne Werbung)

Wir sind aber - wie gesagt - zu dritt. Ich nutze Linux, der eine andere Mac OS und der andere Windows.
Jeder hat was an icq auszusetzen. Da wäre zum Beispiel, dass man Dateien nicht verschicken kann. Das icq Protokoll ist ein bisschen veraltet...
Naja, Motive haben wir genug.

@Wildcat
Ich liebe die Ironischen Fragen  Dann ist ja alles gut!


----------



## tuxedo (12. Sep 2007)

@Manu

Naja, bist du dir SICHER dass du Jabber kennst? Jabber hat ein eigenes Protokoll, Clients für alle Plattformen und KANN, MUSS aber nicht ICQ und Co. einbinden. D.h. mit Jabber ist man von ICQ gänzlich unabhängig. 


Mit dem "Jabbin" Client kann man sogar telefonieren ... Dateien verschicken geht auch prima. 

Jabber verwendet bei der Client zu Client Kommunikation auch P2P (Der Server spielt nur den Index). Ähnlich handhabt es auch Skype. 

Kannst du mir ein Feature nennen das euch wichtig ist und das Jabber nicht abdeckt?


----------



## Wildcard (12. Sep 2007)

Gaim/Pidgin ist doch für alle 3 Plattformen erhältlich und unterstützt so ziemlich alle Protokolle....
Noch ein Tipp am Rande. Gaim/Pidgin verwendet die lib purple für die Kommunikation. Macht doch ein Java Binding dafür, dann kann jeder relativ flott ein Java Frontend dafür schreiben und ihr spart euch viel viel arbeit. Auf die Weise hätten alle was davon.
Wenn Ihr euch für die lib purple entscheidet wäre ich eventuell sogar bereit euch bei der Sache zu unterstützen und/oder ein SVN Repository zu stellen....

btw. Ich lasse mich nur ungern als Wildcat bezeichnen, das hat einen billig-porno touch  :wink:


----------



## Wildcard (12. Sep 2007)

alex0801 hat gesagt.:
			
		

> Kannst du mir ein Feature nennen das euch wichtig ist und das Jabber nicht abdeckt?


Ich kann dir eins nennen, das aktuelle Jabber Clients nicht abdecken.
Ich möchte einen Multi-Protokoll IM der ähnlich wie CenterICQ/IM auf einem Server läuft zu dem man sich per Client konnektieren kann. Der Unterschied zu CenterICQ soll allerdings sein, das ein grafisches Frontend möglich ist (am besten Java, da ich mit verschiedenen Betriebsystemen zu tun habe).
Wenn ManuPs Projekt bereit ist diese Richtung einzuschlagen (lib purple, client/server, grafischer Java Client), würde ich die Sache unterstützen.


----------



## ManuP (13. Sep 2007)

Wir wollen natürlich auch einen Lerneffekt haben!
Nun ist es so, dass wir erst am Anfang von allem stehen und sich die klaren Absichten noch herausstellen müssen.

Bei mir ist es oft so, dass ich erst beim Entwickeln neue und gute Ideen bekomme.

Sinn dieses Threads war es ja nur, herauszufinden, ob eine Peer-To-Peer verbindung mit java (ohne dämliche Routereinstellungen) möglich ist. Ein Server dient dann nur als Index, wer online ist.



			
				Wildcard hat gesagt.:
			
		

> btw. Ich lasse mich nur ungern als Wildcat bezeichnen, das hat einen billig-porno touch  :wink:



*g* stand ein bisschen unter stress. um 14 uhr hatte ich ne zweieinhalb stündige Elektrotechnik Klausur


----------



## chrgai (13. Sep 2007)

Moin zusammen.
Falls ihr das Projekt endgültig fest habt, und noch Hifle benötigt
wäre ich gerne bereit mit einzusteigen. Bei mir geht es dann auch
in erster Linie um den Lerneffekt.

/Christian


----------



## TJ (19. Sep 2007)

moin,
ich würde evtl. auch mit machen, interessiere mich für NWprogammierung. Habe eig. ein grosses wissen über NW technik, kann auch 4free testserver zur verfügung stellen..!


----------



## ToKaM OnE (18. Okt 2007)

Ist euer Projekt noch aktuell, ich hätte auch lust mitzuhelfen.


----------



## chr|s0r (16. Jul 2009)

und was wurde daraus?


----------



## Stefan S. (18. Jul 2009)

Messenger mit eigenem Protokoll und P2P-Struktur.

Hier gucken: CodePlanet - Battleship

EDIT: Ach da hat jemand einen uralten Fred ausgegraben...


----------

