# Verbindung zw. zwei Rechnern funzt nicht



## Damasus (27. Okt 2010)

Hallo und guten Abend allerseits,

folgendes Problem möchte ich schildern: Ich hab eine (bzw. zwei) Programm(e) geschrieben, dass zum einen aus einem Chat Server und zum anderen einen Chat Client. Nun der Chat Server wird auf einem Port z.B. 12345 gestartet und der Chat Client wird mit dem "Hostnamen" und "Port des Servers" gestartet.
Lokal läuft das ganz (natürlich) einwandfrei. Wenn ich nun versuche über einen Rechner, der in einem anderen Netz liegt, eine (TCP) Verbindung aufzubauen, dann bringt der Compiler sowas wie "connection refused", also Verbindung verweigert. Ich kann mir aber nicht vorstellen, der Router (bzw. die NAT-Box), wird wohl keine Verbindungsversuche von außen zulassen, aber er versucht ja den Server zu erreichen.

Kann man das Problem verstehen, bzw. kenn ihr eine Lösung?

Gruß Damasus

Approps wenn ich gerade frage, weiß jemand wie man in Eclipse die Zeilennummerieung einschaltet


----------



## XHelp (27. Okt 2010)

"sowas wie" ist immer unschöne Angabe 
Wer schmeißt denn die Fehlermeldung, Server oder Client?
Wie bindest du denn den Socket auf dem Server? (Codestelle)
Sicher, dass Router und Firewall richtig eingestellt sind?
Sicher, dass es nicht am Programm liegt? (Telnet ausprobieren)


----------



## Damasus (27. Okt 2010)

der Client schmeißt die Fehlermeldung.

Socketbindung auf dem Server: ich stell mal einen Teil hierher, die Methoden sind unwichtig

```
public class ChatServer {
	private Vector<PrintWriter> manager = new Vector<PrintWriter>();
	private int port;
	
	public ChatServer(int port){
		this.port = port;
	}
	
	public void startServer(){
		try {
			ServerSocket server = new ServerSocket(port);
			
			InetAddress addr = InetAddress.getLocalHost();
			System.out.println("ChatServer auf "+addr.getHostName()+"/"+addr.getHostAddress()+
							   ":"+port+" gestartet ...");
			
			while(true){
				Socket client = server.accept();
				new ChatThread(client).start();
			}
		} catch (IOException e){
			System.err.println(e);
		}		
	}
	
	private class ChatThread extends Thread{
		private final static int TIMEOUT = 600000;
		private Socket client;
		private String name;
		private BufferedReader in;
		private PrintWriter out;
		
		public ChatThread(Socket client){
			this.client = client;
		}
		
		public void run(){
			String clientAddr = client.getInetAddress().getHostAddress();
			int clientPort = client.getPort();
			
			try{
				client.setSoTimeout(TIMEOUT);
				
				in = new BufferedReader(new InputStreamReader(client.getInputStream()));
				out = new PrintWriter(client.getOutputStream(), true);
				
				login();
				System.out.println("Verbindung zu "+clientAddr+":"+clientPort+
								   " aufgebaut: "+name);
				
				String message;
				while((message = in.readLine())!=null){
					sendMessage(name+": "+message);
				}
				
				in.close();
				out.close();
			} catch (IOException e){
				System.err.println(e);
			} finally {
				logout();
				try{
					if(client != null)
						client.close();
				} catch (IOException e){
				}
				System.out.println("Verbindung zu "+clientAddr+":"+clientPort+
								   " abgebaut: "+name);
			}
		}
```

Also wie gesagt lokal läuft es, aber ich schätze, dass der Router "irgendwas" verhindert... ich weiß e nicht.. 
Vielleicht hilft der Code weiter


----------



## XHelp (27. Okt 2010)

Bei dem Code hätte ich vermutet, dass du den Socket auf 127.0.0.1 bindest, so dass du gar nicht vor außen dich verbinden kannst, der Punkt scheint aber erledigt zu sein. Aber es bleiben ja noch die restlichen.


----------



## Damasus (27. Okt 2010)

ja mit dem telnet will kann ich noch probieren, nur der andere im anderen Netz ist gerade nicht da  muss es also später testen.
Gut wenn es daran liegt, dann müssen wir uns wohl den Router genauer anschauen.


----------



## mabuhay (29. Okt 2010)

Eclipse Zeilennummern:
Window -> Preferences -> General -> Appearance -> Editors -> auf "Text Editors" klicken, dort hats dann diverse optionen

Netzwerkproblem:
Versuchs zuerst mit einem Ping. Wenn das nicht funktioniert, ist ja evtl der Rauter falsch konfiguriert. Oder gehen sonst verbindungen?

mfg


----------

