client server socket via internet

Y

yyannekk

Gast
hallo,
also ich habe immer noch ein problem mit einer socket verbindung übers internet
ich habe ein chat system für ein spiel umgeschrieben, allerdings probier ich es jetzt erstma mit dem chatprogramm da es insgesamt simpler aufgebaut ist...

mein server programm läuft auf einem rechner hinterm router.
mein client läuft auf einem anderen rechner

problem:
wenn ich eine verbindung zwischen zwei pcs (der eine als server der andere als client) im lokalen netzwerk aufbaue klappt alles.
wenn ich übers internet komme, kriege ich keine verbindung hin.
ich habe im router den port freigegeben (9999) (zum testen alle firewalls ausgeschaltet) und dann von einem rechner der nicht im lok netz ist über internet über die öffentliche ip addresse des serverrechners versucht zu connecten. es kommt dann eine
Code:
java.net.ConnectException: Connection timed out: connect
exception auf der clientseite

ich könnte jetzt auch ein bischen code posten allerdings denke ich liegt es eher daran das ich was mit der verbindung übers internet nicht richtig mache, portfreigabe etc...

ich häng mal den server und client ran. evlt kann jemand testen ob es bei ihm klappt!?
wie gesagt ich weiß das das programm im lokalen netzwerk funktioniert, ich will aber eine verbindung über internet aufbauen.
 

Anhänge

  • ChatClient.jar
    16,3 KB · Aufrufe: 12
  • ChatServer.jar
    16,3 KB · Aufrufe: 10
Zuletzt bearbeitet von einem Moderator:
Y

yyannekk

Gast
ja im router (o2 router) hab ich folgende einstellungen gewaehlt:
dienstname: userdefine ( hier konnte ich sonst noch www, http5, ftp, email, telnet voip(sip) etc in verbindung mit einer server ip addresse auswählen)
bei userdefine konnte ich dann folgendess eingeben:
aktiv [x]
dienstname: chat
start-port: 9999
end-port: 9999
serveripaddresse: "hier hab ich die lokale ip addresse des rechners auf dem das serverprogramm
läuft eingegeben" die addresse hab ich dem lan adapter (win 7) entnommen. sie stand aber auch im router. hat die form 192.168.1.30
 
Zuletzt bearbeitet von einem Moderator:
Y

yyannekk

Gast
ok danke schonmal das du dir die zeit genommen hast um es auszuprobieren.
ich hab das ganze problem jetzt ma runtergebrochen auf ein sehr kleines programm mit dem man nur die verbindung testen kann
es gibt 2 klassen, client und server. es wird ne verbindung aufgebaut und 2 sätze gesendet fertig. es kann auch nur ein client eine verbindung aufbauen, auf threads etc wird also verzichtet

der folgende code ist komplett kompilierbar, ich hängs aber auch nochma ran...
ich denke der code ist relativ leserlich und ohne kommentare leicht zu verstehen

das programm funktioniert bei mir im lan, über internet bekomme ichs nicht hin
das programm nutzt port 4321

Java:
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Client
{
	static JFrame    fenster = new JFrame("Client");
	static JTextArea inhalt  = new JTextArea();
	static JTextField eingabe = new JTextField();
	static JButton connect = new JButton("connect");
	static JFrame ipFenster = new JFrame("Bitte geben sie die Addresse des Servers ein");
	
	static DataInputStream  din;
	static DataOutputStream dout;
	static String host = null;

	public static void main( String... args )
	{
		new Client();
	}
	
	public Client()
	{
		setupGUI();
	}
	
	private void setupGUI()
	{
		fenster.add(inhalt);
		fenster.setSize(600, 300);
		fenster.setVisible(true);
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		connect.addActionListener(new ActionListener()
		{

			@Override
            public void actionPerformed( ActionEvent arg )
			{
				ipFenster.setVisible(false);
				host = eingabe.getText();
				connect();
            }
			
		});
		Container pane = ipFenster.getContentPane();
		pane.setLayout(new BoxLayout(pane,BoxLayout.X_AXIS));
		pane.add(eingabe);
		pane.add(connect);
		ipFenster.setSize(300,70);
		ipFenster.setVisible(true);		
	}
	
	private void connect()
	{
		boolean error = false;
		Socket socket = null;
		try
		{
			socket = new Socket(host, 4321);
			din = new DataInputStream(socket.getInputStream());
			dout = new DataOutputStream(socket.getOutputStream());
		}
		catch (Exception e)
		{
			error = true;
			print("Fehler beim verbindungsaufbau: " + e);
		}
		if (!error)
		{
			print("Verbindung erfolgreich aufgebaut. Socket: " + socket);
			
			sende("knock knock");
			
			print(empfangeDaten());

			try
            {
	            din.close();
	            dout.close();
            }
            catch (IOException e)
            {
	            print("Fehler: " + e);
            }
            
            print("Uebertragung erfolgreich");
		}
	}

	private static void sende( String message )
	{
		print("sende " + message);
		try
        {
	        dout.writeUTF(message);
        }
        catch (Exception e)
        {
        	print("Fehler. konnte " + message + " nicht senden: " + e);
        }
	}
	
	private static String empfangeDaten()
	{
		try
        {
			din.toString();
	        return "empfange " + din.readUTF();
        }
        catch (IOException e)
        {
        	print("Fehler: " + e);
        }
        return "";
	}

	private static void print( String text )
	{
		inhalt.append("\n" + text);
	}
}
Java:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JFrame;
import javax.swing.JTextArea;

public class Server
{
	static JFrame           fenster = new JFrame("Server");
	static JTextArea        inhalt  = new JTextArea();
	static DataInputStream  din;
	static DataOutputStream dout;
	static Socket clientSocket = null;

	public static void main( String... args )
	{
		fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fenster.setLocation(600, 0);
		fenster.add(inhalt);
		fenster.setSize(700, 300);
		fenster.setVisible(true);

		ServerSocket serverSocket = null;
		boolean error = false;
		try
		{
			serverSocket = new ServerSocket(4321);

		}
		catch (Exception e)
		{
			print("Erstellen des Servers fehlgeschlagen: " + e);
			error = true;
		}
		if (!error)
		{
			print("Erstellen des Servers erfolgreich. " + serverSocket);
			try
			{
				print("Warte auf Verbindung");
				clientSocket = serverSocket.accept();

				din = new DataInputStream(clientSocket.getInputStream());
				dout = new DataOutputStream(clientSocket.getOutputStream());

				print("Neu eingehende Verbindung. " + clientSocket);

				print(empfangeDaten());

				sende("whos there?");

				din.close();
				dout.close();
				
				print("Uebertragung erfolgreich");

			}
			catch (Exception e)
			{
				print("Fehler: " + e);
			}
		}
	}

	private static void sende( String text )
	{
		print("sende " + text);
		try
		{
			dout.writeUTF(text);
		}
		catch (Exception e)
		{
			print("Fehler. Kontte " + text + " nicht senden: " + e);
		}
	}

	private static String empfangeDaten()
	{
		try
		{
			return "empfange " + din.readUTF() + " von socket " + clientSocket;
		}
		catch (Exception e)
		{
			print("Fehler: " + e);
		}
		return "";
	}

	private static void print( String text )
	{
		inhalt.append("\n " + text);
	}

}
 

Anhänge

  • ClientTestverbindung.jar
    4,7 KB · Aufrufe: 8
  • ServerTestverbindung.jar
    4,7 KB · Aufrufe: 7
Zuletzt bearbeitet von einem Moderator:

masder

Mitglied
also es gib noch eine andere möglichkeit um eine verbindung auf zu bauen

für den server
Java:
			   serverport= new ServerSocket();
			   serverport.bind(new InetSocketAddress ("Port"));
für client
Java:
				Server = new InetSocketAddress ("IP", "Port");
				client = new Socket();
				client.connect(Server, 100); // hir kannst du noch die milisecunden einstellen wie lang er auf verbindung wartet

so habe ich das bei meinem chatt gemacht und bei mir geht ers über das internt

Gruß masder
 
Y

yyannekk

Gast
ich hab dein beispielcode ausprobiert, leider ohne erfolg.
es funktioniert mit deinem code weiterhin im lan, nicht aber im internet.

kannst du mir evtl dein prog schicken? dann kann ich da ma ausprobieren ob ichs über internet zum laufen krieg?
 

masder

Mitglied
Hi yyannekk

ich habe mir noch mal deinen Code an gesehen und da einen Fehler gefunden danach habe ich ihn getestet und es funktionierte auch übers Internet
dann nach habe ich deinen Chat noch mal getestet und der geht doch übers Internet war ein kleiner Tipp Fehler meiner Seitz sorry

also liegt der Fehler an der Port weiterleitung


Gruß masder
 
Y

yyannekk

Gast
ok vielen vielen dank dass dus nochma getestet hast!
endlich weiß ich mit sicherheit wo das problem liegt!
hab jetzt auch rausgefunden das relativ viele leute probleme mit der port weiterleitung meines routers (son zyxel von o2 surf and phone) haben. scheint nicht ganz so einfach zu sein wie man denkt/ wie man es von anderen routern gewohnt ist
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
D Socket Run Args Client/Server Socket Netzwerkprogrammierung 1
H Socket Client/Server Socket Programmieren Netzwerkprogrammierung 1
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
Y server client socket verbindung übers internet aufbauen Netzwerkprogrammierung 8
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
W Socket Client-Server Verbindung. Wie Strings senden? Netzwerkprogrammierung 6
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
J Client-Server und SOAP Netzwerkprogrammierung 23
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33
M Socket Nachricht von TCP-Client an Server schicken Netzwerkprogrammierung 12
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
G Server-Client IO Problem Netzwerkprogrammierung 6
I Socket Das erste Server-Client Programm Netzwerkprogrammierung 16
M Socket Server antwortet dem Client nicht Netzwerkprogrammierung 6
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
P Server als Client nutzen Netzwerkprogrammierung 8
Cromewell Socket Multithreaded Server und Client Netzwerkprogrammierung 1
Y Client/Server/DB communication Netzwerkprogrammierung 3
JavaWolf165 Socket mit .writeUtf etwas vom Client zum Server schicken Netzwerkprogrammierung 13
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
gamebreiti Socket Server / Client Anwendung Manipulation von Objekten durch Server Netzwerkprogrammierung 9
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
F Server Client Anwendung mit UDP Netzwerkprogrammierung 2
A RMI Wo treten Exceptions bei RMI Aufrufen auf? Auf Client oder auf Server? Netzwerkprogrammierung 3
A ByteBuffer - Client/Server Netzwerkprogrammierung 9
K C# Server - Android Client Netzwerkprogrammierung 0
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
P HTTP Server / Client Netzwerkprogrammierung 1
E Thematik Client server Netzwerkprogrammierung 2
D Client/Server per Crossover Lan Kabel Netzwerkprogrammierung 1
S Client Server Connection Netzwerkprogrammierung 4
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
S Sichere Server/Client Architektur Netzwerkprogrammierung 1
D Chat Server/mehre Client Netzwerkprogrammierung 9
I Server+Client Netzwerkprogrammierung 3
N Client am Server abmelden Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
U Socket Instant Messanger (Server Linux, Client Windows) Netzwerkprogrammierung 1
Athena Grundsatzfragen zu Client-Server-Architektur / Matchmaking Netzwerkprogrammierung 1
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
F Client Server DB Netzwerkprogrammierung 0
A Verständnisfrage Multi-Threaded Client/Server Netzwerkprogrammierung 5
F Tipps zum Thema Server/Client vie SOAP Netzwerkprogrammierung 0
F Socket Java - Server/Client simple Netzwerkprogrammierung 1
R Zeitliche Syncronisation Server - Client Netzwerkprogrammierung 0
S Server-Client: Image senden Netzwerkprogrammierung 2
C Multithreading Client / Server erklärt Netzwerkprogrammierung 11
P server - client verbindung (anfänger) Netzwerkprogrammierung 8
J Client Server - Serialisierung Netzwerkprogrammierung 8
Luk10 Server / Client: Clients speichern! Netzwerkprogrammierung 6
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
K Client => Server Netzwerkprogrammierung 2
A ? Home-Network, Server/Client-Einrichtung Netzwerkprogrammierung 4
S Socket Server: ConnectionError vom Client erkennen Netzwerkprogrammierung 31
A Java Server - IOS Client Applikation Netzwerkprogrammierung 20
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
N Client-Server-Datenbank Netzwerkprogrammierung 13
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
B Client/Server Connection Problem Netzwerkprogrammierung 2
S Server Client Daten hin und herschicken Netzwerkprogrammierung 2
R Server zu Client Kommunikation Netzwerkprogrammierung 11
D TCP Verbindung (Java Client und Visual Basic Server) Netzwerkprogrammierung 12
S Socket Applet Client bekommt keine GLOBALE Verbindung zum Server Netzwerkprogrammierung 25
T Server und Client verbinden nicht Netzwerkprogrammierung 6
D Server Client Verbindung - Unexpected End of File - Invalid HTTP Response Netzwerkprogrammierung 4
V Socket UDP Server/Client Kommunikation sehr langsam Netzwerkprogrammierung 2
das-mo Client/Server sendet nicht Netzwerkprogrammierung 7
Z Socket Server/Client vernünftiger Verbindungsabbruch Netzwerkprogrammierung 4
F TCP Server/Client Netzwerkprogrammierung 14
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
Ollek Socket Sucher passende Server/Client Lösung für meine Anwendung Netzwerkprogrammierung 2
N eine klasse mit server & client Netzwerkprogrammierung 5
D RMI Gui auf client updaten basierend auf den Property Änderung des Models auf dem Server ohne polling Netzwerkprogrammierung 12
T Socket Client versucht zyklische Verbindung zum Server Netzwerkprogrammierung 4
S Socket Einfache Client/Server-Anwendung Netzwerkprogrammierung 11
F Socket Server/Client Kommunikation Netzwerkprogrammierung 4
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
D Projektstruktur / Architektur (Client-Server) Netzwerkprogrammierung 9
P Socket IRC Client nicht kompatibel mit Server Netzwerkprogrammierung 30
F FTP Client mit Sockets - wann sagt der Server nichts mehr? Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben