Socket Socketverbindung nur im lokalen Netzwerk

Lexi

Bekanntes Mitglied
Guten Abend zusammen,

Ich habe eine Client und eine Server Klasse die über Sockets miteinander kommunizieren. Der Server wartet in einer while(true) Schleife permanent auf einen Clienten der, sobald er eine Verbindung herstellt eine Bestätigungsnachricht geschickt bekommt und danach wird die Verbindung von Seiten des Server wieder getrennt.
Das ganze geht solange gut, wie ich mich auf lokaler Ebene (localhost, oder im eigenen WLAN) bewege. Sobald ich versuche übers Internet eine Verbindung herzustellen gibts eine Fehlermeldung (s.h. Anhang)
Ein Rechner war Windows 7 und auf dem anderen läuft Ubuntu Linux 10.04, die Firewall auf dem Win7 war aus, auf dem Ubuntu wüsste ich nicht, dass es dort standartmäßig so etwas gibt.

Client.java :
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String ip = args[0];
		int port = Integer.parseInt(args[1]);
		try {
			Socket connection = new Socket(ip,port);
			BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
			String line = new String();
			while((line = in.readLine()) != null){
				System.out.println(line);
			}
			System.out.println("Closing down connection...");
			in.close();
			connection.close();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

Server.java:
Java:
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

	private Socket socket;

	public Server(int port) {
		try {
			ServerSocket sSocket = new ServerSocket(port);
			System.out.println("Server is ready");
			while (true) {
				System.out.println("Waiting for client...");
				socket = sSocket.accept();
				System.out.println("Connection established. ");
				System.out.println(socket.getInetAddress().toString());
				BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
				out.write("This is a test message.");
				out.flush();
				out.close();
				socket.close();
				System.out.println("Connection closed");
			}

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Server serv = new Server(Integer.parseInt(args[0]));
	}

}
 

Anhänge

  • SocketVerbindung.png
    SocketVerbindung.png
    10,9 KB · Aufrufe: 70

XHelp

Top Contributor
Ich bezweifle, dass es was mit Java zu tun hat... kannst höhstens versuchen dich mit telnet zu verbinden, aber das wird imho auch scheitern.
Bist du dir auch sicher, dass der Router richtig eingestellt ist?
 

Lexi

Bekanntes Mitglied
Ich habe keine Ahnung was ich beim Router einstellen muss/kann damit das klappt. Wie verbinde ich mich mit telnet ?
 
G

Gast2

Gast
Code:
telnet 80.143.216.109 16567

Der Server läuft unter ubuntu? Dann hast du mit sicherheit einen Ipfilter aktiv -> iptables. Ist das ein gehostetes Angebot, z.B. ein Server bei 1und1 oder steht der privat irgendwo zuhause hinter eine Fritz!Box oder nem Teledat Router?
 

XHelp

Top Contributor
Je nach dem was du für einen Router hast, gibt es da Einstellungen wie "Portforwarding", "Internetdienste", "NAT" o.ä.
Es läuft darauf hinaus, dass du im Router einstellst, dass er den Port X auf deinen lokalen Rechner weiterleitest, damit eine Verbindung aufgebaut wird.
 

Lexi

Bekanntes Mitglied
Ich habe keinen extra Server auf dem mein Server Code läuft ich starte die Server Klasse ganz normal im Terminal auf meinem PC auf dem halt Ubuntu läuft. Iptables ? Wie komme ich da dran und was muss ich dort machen ? telnet werde ich noch ausprobieren, ist hier grad nicht möglich und das mit dem Router versuche ich auch noch.
Soweit erstmal vielen Dank für die Hilfe.
 

lama

Mitglied
Hallo Lexi,

da kannst du ohne viel Aufwand leider nicht viel machen ;) Das liegt an NAT und die entsprechenden Einträgen im gewünschten Frame. Damit dein Programm auch sauber über das Internet funktioniert, brauchst du einen Weg, der daran vorbeiführt: UDP hole punching - Wikipedia, the free encyclopedia

Es ist allerdings meistens angenehmer, nicht mit Sockets zu arbeiten, sondern sich direkt auf ein fertiges Protokoll zu stützen, zum Beispiel XMPP (SmackXMPP für Java ist sehr brauchbar, finde ich).

Alternativ kannst du auf den flächendeckenden Einsatz von IPv6 warten ;D
 
Zuletzt bearbeitet:
T

tuxedo

Gast
Hallo Lexi,

da kannst du ohne viel Aufwand leider nicht viel machen ;)

So ein quatsch. Sofern sich der "Server" an einem "herkömmlichen DSL-Anschluss" angeschlossen ist, und kein allzu exotischer/uralter Router benutzt wird, lässt sich Portforwarding mit wenigen Klicks einrichten. Das ist idR. auch keine Sonderspezial-Experten-Funktion im Router, sondern gang und gebe und in den allermeisten Handbüchern exzellent beschrieben.

Das liegt an NAT und die entsprechenden Einträgen im gewünschten Frame. Damit dein Programm auch sauber über das Internet funktioniert, brauchst du einen Weg, der daran vorbeiführt: UDP hole punching - Wikipedia, the free encyclopedia

Oder die UPNP Funktion des Routers (können recht viele) benutzen.

Es ist allerdings meistens angenehmer, nicht mit Sockets zu arbeiten, sondern sich direkt auf ein fertiges Protokoll zu stützen, zum Beispiel XMPP (SmackXMPP für Java ist sehr brauchbar, finde ich).

Das löst das NAT Problem nicht, macht nur die Entwicklung angenehmer.

Alternativ kannst du auf den flächendeckenden Einsatz von IPv6 warten ;D

Naja, da wird er wohl noch lange warten. So schnell wird sich IPv6 beim Providerkunden (leider) nicht durchsetzen :-(

@Lexi
Was für einen DSL-Anschluss hast du, bzw. was für ein Router ist auf Serverseite in Verwendung?

Gruß
Alex
 
G

Gast2

Gast
Naja, da wird er wohl noch lange warten. So schnell wird sich IPv6 beim Providerkunden (leider) nicht durchsetzen :-(

ich will hoffen das das noch ein Weilchen dauert ... mit IPv6 fällt der ganze NAT-Kram ... ist zwar für Informatiker einfacher - allerdings wird das die Rechner von Otto-Voll-Dau ins Internet katapultieren und damit $BadGuy wieder Tür und Tor öffnen :autsch:
 
T

tuxedo

Gast
ich will hoffen das das noch ein Weilchen dauert ... mit IPv6 fällt der ganze NAT-Kram ... ist zwar für Informatiker einfacher - allerdings wird das die Rechner von Otto-Voll-Dau ins Internet katapultieren und damit $BadGuy wieder Tür und Tor öffnen :autsch:

Kann ich nur unterschreiben ... Kann mich ebenfalls nicht damit anfreunden dass bald jede Kaffemaschine, jeder Rasierapparat - oder etwas realistischer - jeder SAT-Receiver oder BluRay Player, Rechner, Laptop, IPhone oder Tablet-PC direkt und ohne umwege von überall aus erreichbar sein wird.

NAT ist auf der einen Seite lästig, auf der anderen ist es privatspährentechnisch aber auch praktisch.

Aber gut, *backtotopic*

- Alex
 

lama

Mitglied
Hi tuxedo,

So ein quatsch. Sofern sich der "Server" an einem "herkömmlichen DSL-Anschluss" angeschlossen ist, und kein allzu exotischer/uralter Router benutzt wird, lässt sich Portforwarding mit wenigen Klicks einrichten. Das ist idR. auch keine Sonderspezial-Experten-Funktion im Router, sondern gang und gebe und in den allermeisten Handbüchern exzellent beschrieben.

Du willst es jedem Benutzer zumuten, an seinem Router rumzuspielen, nur damit eine Applikation läuft? Das ist nicht schön =/

Oder die UPNP Funktion des Routers (können recht viele) benutzen.

Aber nicht alle, und was machen diese Nutzer dann?

Das löst das NAT Problem nicht, macht nur die Entwicklung angenehmer.

Im Falle von XMPP schon, vorausgesetzt man hat einen fertig konfigurierten Server zur Verfügung.

Naja, da wird er wohl noch lange warten. So schnell wird sich IPv6 beim Providerkunden (leider) nicht durchsetzen :-(

Ja, da hast du Recht. Mal sehen, wie lange das dauert ;)


Beste Grüße

lama
 

tuttle64

Bekanntes Mitglied
Du willst es jedem Benutzer zumuten, an seinem Router rumzuspielen, nur damit eine Applikation läuft? Das ist nicht schön =/


das hat nichts mit schön oder unschön zu tun, sondern mit der sicherheit, da i.d.r. die ports geschlossen sind. zudem muss nur der router an dem der server dranhängt für das portforwarding konfiguriert werden.
 

Lexi

Bekanntes Mitglied
Guten Abend,

hier bin ich endlich wieder. Habe nun den entsprechenden Port in meinem Router an meinen Rechner weitergeleitet und es hat alles reibungslos geklappt.
Vielen Danke an alle Beteiligten.

Gruß Lexi
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
F Verständnisfrage Verfügbarkeit Socketverbindung Netzwerkprogrammierung 5
E Socketverbindung über das Internet - Timeout? Netzwerkprogrammierung 28
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
reibi Socket Socketverbindung nutzt welches Protokoll? Netzwerkprogrammierung 5
Q Problem bei Vergleichen von Strings übertragen über eine Socketverbindung Netzwerkprogrammierung 3
J Socketverbindung zwischen Javaclient und C-Server Netzwerkprogrammierung 11
IT-MaD konstante Socketverbindung mit Verbindungscheck u. reconnect Netzwerkprogrammierung 5
M Socketverbindung funzt nich immer Netzwerkprogrammierung 3
0 Socketverbindung zwischen PHP und Java? Netzwerkprogrammierung 6
P Array per Socketverbindung versenden Netzwerkprogrammierung 2
D Socketverbindung schlägt fehl - Connection refused: connect Netzwerkprogrammierung 4
S Socketverbindung übers WWW Netzwerkprogrammierung 6
T :?: SHH, SSL, Tunneling bei Socketverbindung ? Netzwerkprogrammierung 6
D Geräte im Lokalen netzwerk auflisten Netzwerkprogrammierung 1
C Client connection per Portforwarding auf einen lokalen Serverport Netzwerkprogrammierung 3
Semox Socket Selbstgeschriebenen Webserver im lokalen Netzwerk publizieren? Netzwerkprogrammierung 4
V Alle Ip-Adressen eine Lokalen-Netzwerkes erfragen Netzwerkprogrammierung 9
P SocketServer im lokalen netzwerk suchen Netzwerkprogrammierung 2
agent47 IP Adressen im Lokalen Netzwerk Scannen Netzwerkprogrammierung 7
S welche Rechner sind im lokalen Netz online Netzwerkprogrammierung 11
N HTML-Übertragung im lokalen Netzwerk mit Java - wie? Netzwerkprogrammierung 6
S Client-Server Chat Problem nur im lokalen Netztwerk Netzwerkprogrammierung 23
feuervogel Sockets - Lokalen Port aber nicht IP bestimmen Netzwerkprogrammierung 3
I ActiveMQ-Messages übers Netzwerk Netzwerkprogrammierung 13
M Socket Netzwerk Übertragung zwischen 4 Clients Netzwerkprogrammierung 2
temi (Netzwerk-) Kommunikation zwischen Anwendungen. Wie? Netzwerkprogrammierung 5
W Das Netzwerk entfernen mit Wifi Manager Netzwerkprogrammierung 1
F Neuronales Netzwerk - Genetischer Algorithmus Netzwerkprogrammierung 0
windl Sporadische Aussetzer im Netzwerk Netzwerkprogrammierung 10
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
MaxG. Netzwerk Ping falsches ergebnis Netzwerkprogrammierung 7
T Netzwerk Login Felder ansprechen Netzwerkprogrammierung 1
B Netzwerk - Fernsteuerung Netzwerkprogrammierung 1
S Netzwerk-Framework gesucht Netzwerkprogrammierung 6
J Hilfe beim programmiern einer App zur Anmeldung im Wlan-Netzwerk Netzwerkprogrammierung 0
C Netzwerk Portzuweisungsproblem Netzwerkprogrammierung 0
I PingPong Spiel übers Netzwerk Netzwerkprogrammierung 1
M Verbindung zwischen zwei Pc in dem Selben Netzwerk Netzwerkprogrammierung 8
M PongSpiel Netzwerk Netzwerkprogrammierung 1
fLooojava Daten an ein Arduino im selben Netzwerk senden Netzwerkprogrammierung 1
I Netzwerk FileShare Program Netzwerkprogrammierung 2
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
D Ermitteln ob WLAN-Netzwerk UDP unterstützt Netzwerkprogrammierung 1
O 4Gewinnt Multiplayer - Netzwerk Problem (TCP) Netzwerkprogrammierung 1
B WebSocket Verbindungsaufbau aus localen Netzwerk Netzwerkprogrammierung 2
S Bilder durch's Netzwerk usw ... Netzwerkprogrammierung 10
Kr0e Dezentrales Soziales Netzwerk Netzwerkprogrammierung 48
G Klassen über Netzwerk kommunizieren lassen Netzwerkprogrammierung 6
vandread Zugriff auf Soziales Netzwerk mittels Java? Netzwerkprogrammierung 4
P Automatische Host suche im Netzwerk Netzwerkprogrammierung 3
D Socket Class über Netzwerk verschicken Netzwerkprogrammierung 2
S Netzwerk Verbindungsproblem mit Cajo Netzwerkprogrammierung 5
c_sidi90 ideale Lösung, Screen Capture über Netzwerk Netzwerkprogrammierung 3
J Komplexes Netzwerk-Spiel im Internet Netzwerkprogrammierung 13
J ObjectInputStream im Netzwerk Netzwerkprogrammierung 8
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
A java im netzwerk anderen rechner runterfahren Netzwerkprogrammierung 3
U Datei über das Netzwerk einlesen und speichern Netzwerkprogrammierung 8
M Netzwerk Programmierung Netzwerkprogrammierung 2
F Netzwerk-Designkonzept Netzwerkprogrammierung 2
D Ring-Netzwerk - wie fange ich an? Netzwerkprogrammierung 3
X Password übers Netzwerk schicken jPasswordField Netzwerkprogrammierung 2
M Socket Bilder über das Netzwerk übertragen Netzwerkprogrammierung 4
c_sidi90 Alle Rechner im Netzwerk ermitteln Netzwerkprogrammierung 17
D Netzwerk-To-Do-Liste Netzwerkprogrammierung 5
S Socket nach anderen clients im netzwerk suchen Netzwerkprogrammierung 3
T Netzwerk-Dateiübertragung optimieren Netzwerkprogrammierung 15
G Netzwerk Speed checken Netzwerkprogrammierung 3
F Char über Netzwerk senden Netzwerkprogrammierung 6
I Objekte über das Netzwerk Netzwerkprogrammierung 5
B RMI RMI, Callback und Netzwerk Netzwerkprogrammierung 6
S Netzwerk und Objekte Netzwerkprogrammierung 5
G Netzwerk IP Frage Netzwerkprogrammierung 4
Akrillo Datei per Netzwerk senden Netzwerkprogrammierung 10
W funktionen übers netzwerk nutzen Netzwerkprogrammierung 4
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
M upnp Device-Discovery im Netzwerk Netzwerkprogrammierung 5
T Administration von Software auf Clients im Netzwerk Netzwerkprogrammierung 6
H MySQL übers Netzwerk Netzwerkprogrammierung 9
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
T Pfadangabe beim kopieren übers Netzwerk Netzwerkprogrammierung 5
G Verschlüsselte Strings über Netzwerk verschicken Netzwerkprogrammierung 19
D robustes Netzwerk Netzwerkprogrammierung 2
G Datei performant im Netzwerk verschieben Netzwerkprogrammierung 4
D BufferedImage über das Netzwerk senden Netzwerkprogrammierung 2
E Netzwerk Fehlererkennung Netzwerkprogrammierung 11
M Pc's im Netzwerk auflisten Netzwerkprogrammierung 2
T Welches Netzwerk ist am bestern für. Netzwerkprogrammierung 2
ModellbahnerTT Problem feste String ins Netzwerk zu geben Netzwerkprogrammierung 5
A IRC-Server für das lokale Netzwerk? Netzwerkprogrammierung 12
TheJavaKid Anzahl der Server im Netzwerk Netzwerkprogrammierung 7
R Spiel auf Netzwerk auslegen? Netzwerkprogrammierung 10
R Applet & Netzwerk Netzwerkprogrammierung 4
K netzwerk durchsuchen Netzwerkprogrammierung 10
A array übers netzwerk (anfänger) Netzwerkprogrammierung 8
T Möglichkeit über das Netzwerk eine Funktion zu starten? Netzwerkprogrammierung 2
flashfactor Dateien im Netzwerk kopieren Netzwerkprogrammierung 2
R File chooser übers Netzwerk Netzwerkprogrammierung 3
A Betriebssystem über Netzwerk ermitteln Netzwerkprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben