# 2 Ports miteinander verbinden



## poschdi (19. Mai 2005)

Moinsen,

erstmal vorweg, meine Java Kenntnisse sind nach dem Studium etwas eingestaubt 

Ich möchte gern auf meinem Server 2 Ports öffnen, und das was auf der einen Seite reinkommt, auf der anderen Seite wieder ausgeben.

Aktuell sieht mein Code folgendermassen aus:

```
//Die Main Klasse, wo 2 Threads gestartet werden
public class Rondevuserver
{
	public final static int DEFAULT_PORT1 = 5000;
	public final static int DEFAULT_PORT2 = 5001;
	public static Teilnehmer t1;
	public static Teilnehmer t2;

	
	public static void main(String[] args)
	{
		t1 = new Teilnehmer(DEFAULT_PORT1,t2);
		t2 = new Teilnehmer(DEFAULT_PORT2,t1);
		t1.start();
		t2.start();
	}
		
}

public class Teilnehmer extends Thread
{
	private int port;
	private Socket connection;
	private Teilnehmer partner;
	
	Teilnehmer(int newPort,Teilnehmer newPartner)
	{
		this.port= newPort;
		this.partner = newPartner;
	}
	
	public void run()
	{
		try
		{
			ServerSocket server = new ServerSocket(port);
			Socket connection = null;
			System.out.println("Thread: Teilnehmer(" + port + ") geladen");
			
			while (true)
			{
				try 
				{
					connection = server.accept();
					while (connection!= null)
					{
						String in = new String();
						BufferedReader networkIn = new BufferedReader(new InputStreamReader(connection.getInputStream()));
						in = networkIn.readLine();
						System.out.println(port + " " + in);
						OutputStreamWriter out = new OutputStreamWriter(partner.connection.getOutputStream());
						out.write(in +"\r\n");
						out.flush();
						if (in.equals("."))
						{
							connection.close();
						}
					}
				}
				catch (IOException e) {}
				finally
				{
					try
					{
						if (connection!= null)
							connection.close();
						
					}
					catch (IOException e) {}
					
				}
			}
		}
		catch (IOException e)
		{
			System.err.println(e);
		}
	}
}
```

Ich starte dann zu Testzwecken 2 Telnet sessions.
Das Einlesen und Ausgeben am selben Port funktioniert einwandfrei. Nur sobald ich es an der partner Seite ausgeben will bekomme ich in Zeile 52 eine Nullpointer Exception.

```
OutputStreamWriter out = new OutputStreamWriter(partner.connection.getOutputStream());
```

Wie bekomme ich meinen partner richtig initialisiert?

poschdi


----------



## Bleiglanz (19. Mai 2005)

die eine Seite ist ein serversocket, klar, die liest

aber die andere? wohin soll die denn ausgeben??

      t1 = new Teilnehmer(DEFAULT_PORT1,t2); // hier ist t2 NULL
      t2 = new Teilnehmer(DEFAULT_PORT2,t1);


----------



## poschdi (19. Mai 2005)

Hmm okay, wie muss ich dass dann aber hinbiegen?
Funktionieren tut es aber in beide Richtungen nicht :/


----------



## Bleiglanz (19. Mai 2005)

mit einem setter für den jeweils anderen

erste beide mit new erzeugen

dann mit einem setPatner(..) den jeweils anderen injizieren


----------



## poschdi (19. Mai 2005)

Thx, manchmal ist die Lösung doch so einfach


----------

