package netzprog01_j_ultimate; import java.io.IOException; import java.net.*; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Daniel Leese */ public class Sockenschuss { MulticastSocket multiSocket = null; InetAddress targetAddress = null; private static Sockenschuss instance = null; int port = 61312; String progKey = new String("012345678"); String clientKey = new String(""); java.util.Random rand = null; int min = 10000, max = 99999; Integer randNumber; private Sockenschuss() { rand = new java.util.Random(); randNumber = min + Math.abs(rand.nextInt()) % (max - min + 1); clientKey = randNumber.toString(); try { multiSocket = new MulticastSocket(port); targetAddress = InetAddress.getByName("224.0.0.1"); multiSocket.joinGroup(targetAddress); } catch (IOException ex) { Logger.getLogger(Sockenschuss.class.getName()).log(Level.SEVERE, null, ex); } } /** * Wenn noch keine Instanz von Sockenschuss existiert werd einen neue erzeugt. * @return Instanz Adresse */ public static Sockenschuss getInstance() { if (instance == null) { instance = new Sockenschuss(); } return instance; } /** * Sendent das Uebergebene Object toSend * @param toSend Object das gesendet werden soll */ void send(String toSend) { String toSendHelp = progKey + "|" + clientKey + "|" + toSend; DatagramPacket hi = new DatagramPacket(toSendHelp.toString().getBytes(), toSendHelp.toString().length(), targetAddress, port); try { this.multiSocket.send(hi); } catch (IOException ex) { Logger.getLogger(Sockenschuss.class.getName()).log(Level.SEVERE, null, ex); } } /** * Gibt ein empfangenes DatagramPacket zuruck. * @return Ein empfangenes DatagramPacket. */ public DatagramPacket receive() { byte[] buf = new byte[1000]; DatagramPacket recv = new DatagramPacket(buf, buf.length); try { multiSocket.receive(recv); } catch (IOException ex) { Logger.getLogger(Sockenschuss.class.getName()).log(Level.SEVERE, null, ex); } return recv; } }