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

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?

Java:
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

Bekanntes Mitglied
Java:
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

Top Contributor
Java:
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.

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 ;-)
 
Vielen Dank!:) Ihr habt mir sehr weitergeholfen, leider kriege ich noch eine Fehlermeldung "unreachable code" in der Zeile 18
Java:
clientSocket.close();
...

Java:
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

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

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

Volvagia

Top Contributor
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.
 

Neue Themen


Oben