# ServerSocket.accept() überschreibt IP-Adresse



## geqoo (18. Nov 2011)

Hallo,

ich habe hier einen Server Socket, bei dem  ich mittels accept die Clients annehme. 


```
ServerSocket listener = new ServerSocket(1339);

while(true) {
  try {
    new sthread(listener.accept()).start();
    System.out.println("Client connected.");
  } catch (IOException e) { e.printStackTrace(); }
}
```

Und noch den Thread: 


```
public class sthread extends Thread implements Runnable {
	private static Socket client = null;
	private static String ip_addr;

    public sthread (Socket argclient) {
    	super("sthread");
    	sthread.client = argclient;

    	sthread.ip_addr = argclient.getRemoteSocketAddress().toString();
    }

...

}
```

Der Server nimmt die Clients brav an, alles schön und gut. 

Das Problem dabei ist jetzt aber, dass der Server die IP Adresse bei allen Clients überschreibt, und zwar auf die Adresse, die vom letzten Client kommt, der sich verbunden hat.

Weiß jemand Abhilfe?


----------



## SlaterB (18. Nov 2011)

Attribute nicht statisch?


----------



## Lumaraf (18. Nov 2011)

Du solltest die Attribute client und ip_addr dann auch nicht static machen wenn die nicht gegenseitig von den Thread überschrieben werden sollen. Ach und btw Klassennamen schreibt man in Java immer mit einem großen Anfangsbuchstaben.


----------



## geqoo (18. Nov 2011)

Oh ja okay, das Problem mit dem static...

Dankeschön euch beiden!


----------



## irgendjemand (22. Nov 2011)

```
extends Thread implements Runnable
```

kommt das nicht einigen hier auch komisch vor ?

@TO
Thread implementiert bereits das Interface Runnable ... desshalb musst du es nicht selbst implementieren ...

ENTWEDER von Thread ableiten
ODER Runnable implementieren ...

beides ist sinnlos *und grenzt schon an polymorphie*


----------

