[Java] Portforwarding

moderat

Newbie
Registriert
März 2009
Beiträge
4
Hey!

Zur Zeit beschäftige ich mich mit der Programmierung eines Instant Messengers, der direkte Verbindungen zwischen zwei PC's eingeht und das Senden und Empfangen von Nachrichten erlaubt.

Lokal funktioniert das alles wunderbar, und übers Internet mit Port Forwarding im Router wahrscheinlich auch.

Was ich mich frage ist, ob man (gegebenenfalls mit ein paar Tricks/Systemfunktionen/andere Programmiersprachen) die Verbindung auch ohne Portforwarding zum Laufen bringen könnte?

Der Teil des Codes, der für die Verbindung zuständig ist:
Code:
		run = true;
		try {
			ServerSocket serversocket = new ServerSocket();
			Socket socket;
			if(isHost) {
				serversocket = new ServerSocket(user.getPort());
				socket = serversocket.accept();
			} else {
				socket = new Socket(user.getIp(), user.getPort());
			}
 
Du könntest einen zentralen Server machen. Mit dem hat jeder Client eine Verbindung und somit ist das Senden von Nachrichten zwischen allen Beteiligten möglich. ICQ und Konsorten funktioniert auch so.
Ansonsten müsstest du dich mal einlesen wie P2P-Programme wie Skype arbeiten. http://en.wikipedia.org/wiki/UDP_hole_punching das hier ist wohl die häufigst genutzte Technik, ansonsten könnte man noch was über UPNP machen wobei das nicht jeder Router unterstützt...
 
Zurück
Oben