# Im Abstand von x Sekunden Zufallszahlen vom Client an den Server schicken?



## chiwawathebrave (2. Mai 2011)

Hallo,

ich sitze gerade an einer Übung für die Uni und komme einfach nicht darauf wie ich von einem Client Zufallszahlen im Abstand von 5 Sekunden an einen Server schicken soll, könnt Ihr mir da weiterhelfen?


```
import java.io.*;
import java.net.*;

class UDPClient
{
   public static void main(String args[]) throws Exception
   {
      DatagramSocket clientSocket = new DatagramSocket();
      
      InetAddress IPAddress = InetAddress.getByName(EchoClient.HOST_NAME);
      byte[] sendData = new byte[1024];
      
      DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 4445);
      clientSocket.send(sendPacket);
      clientSocket.close();
      }
}
```


----------



## chalkbag (2. Mai 2011)

```
Verbindung aufbauen...
do{
     senden();
     Thead.sleep(5000);
}while (Anwendung beenden?)
verbindung beenden...
```

obwohl das jetzt nicht ganz exakt 5 sekunden wären, aber so genau nimmt man es bestimmt nicht.


----------



## FArt (2. Mai 2011)

chalkbag hat gesagt.:


> ```
> Verbindung aufbauen...
> do{
> senden();
> ...



Ich würde anstatt Thread.sleep den ScheduledExecutorService aus dem java concurrency Package verwenden ( ScheduledExecutorService (Java 2 Platform SE 5.0) )
Dem  kann man sogar sagen, ob die Ausführungszeit beim Delay mitgerechnet werden soll, oder nicht ;-)


----------



## chiwawathebrave (2. Mai 2011)

Vielen Dank! Ihr habt mir sehr weitergeholfen, leider kriege ich noch eine Fehlermeldung "unreachable code" in der Zeile 18 
	
	
	
	





```
clientSocket.close();
```
...


```
import java.io.*;
import java.net.*;

class UDPClient
{
   public static void main(String args[]) throws Exception
   {
      DatagramSocket clientSocket = new DatagramSocket();
      
      do{
      InetAddress IPAddress = InetAddress.getByName(EchoClient.HOST_NAME);
      byte[] sendData = new byte[1024];
      Thread.sleep(5000);
      DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 4445);
      clientSocket.send(sendPacket);
      clientSocket.close();
      }while (true); 
      clientSocket.close();
      }
}
```


----------



## Volvagia (2. Mai 2011)

unreachable code -> Unerreichbarer Code. 
Er führt die Zeile unter der While niemals aus.

Du solltest aber schon eine Abbruchbedingung einbauen, denn irgendwann muss er raus.


----------



## chiwawathebrave (2. Mai 2011)

Danke für die Antwort, ich weiss das der Code nicht erreichbar ist, aber irgendwie bin ich zu doof das umzusetzen, wie würde das denn in Code aussehen?


----------



## Volvagia (2. Mai 2011)

Na entweder du entfernst den Code da unten (du schließt den Socket sowieso in der While), oder du baust eine Abbruchbedingung ein, die mehr als nur true sein kann.
Ich kenn mich mit UDP nicht aus, aber müsste dir keine Exception fliegen, wenn der DatagramSocket geschlossen wird und du erneut versuchst, darüber du senden? Wobei ich das sowieso nicht verstehe, da UDP ja verbindungslos ist.


----------

