tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
3301
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    schaut mal hier:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    
    /**
     * 
     */
    package de.tutorials;
     
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.TimeUnit;
     
    import org.jgroups.ChannelClosedException;
    import org.jgroups.ChannelNotConnectedException;
    import org.jgroups.JChannel;
    import org.jgroups.Message;
     
    /**
     * @author Tom
     * 
     */
    public class JGroupsExample {
     
        /**
         * @param args
         */
        public static void main(String[] args) throws Exception {
     
            String props = "UDP(mcast_addr=224.0.0.150;mcast_port=5555):PING";
            final JChannel channel = new JChannel(props);
            System.out.println("Channel ready...");
            channel.connect("BUBU");
     
            ExecutorService executorService = Executors.newSingleThreadExecutor();
     
            executorService.execute(new Runnable() {
                public void run() {
                    while (channel.isOpen()) {
                        try {
                            String data = "XXX " + System.currentTimeMillis();
                            System.out.println(channel.getLocalAddress()
                                    + " Sending... " + data);
     
                            channel.send(new Message(null, channel
                                    .getLocalAddress(), data));
     
                        } catch (ChannelNotConnectedException channelNotConnectedException) {
                            channelNotConnectedException.printStackTrace();
                        } catch (ChannelClosedException channelClosedException) {
                            channelClosedException.printStackTrace();
                        }
     
                        try {
                            System.out.println(channel.getLocalAddress()
                                    + " Received: " + channel.receive(0));
                        } catch (Exception exception) {
                            exception.printStackTrace();
                        }
     
                        try {
                            TimeUnit.SECONDS.sleep(5);
                        } catch (InterruptedException interruptedException) {
                            interruptedException.printStackTrace();
                        }
                    }
                }
            });
     
            TimeUnit.MINUTES.sleep(2);
            executorService.shutdown();
            channel.close();
     
        }
     
    }

    Startet man davon mehrere Anwendungen bekommt man beispielsweise folgende Ausgabe (für 3 Clients):
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    log4j:WARN No appenders could be found for logger (org.jgroups.JChannel).
    log4j:WARN Please initialize the log4j system properly.
    Channel ready...
    192.168.174.1:1758 Sending... XXX 1178746249562
    192.168.174.1:1758 Received: [dst: 224.0.0.150:5555, src: 192.168.174.1:1758 (1 headers), size = 21 bytes]
    192.168.174.1:1758 Sending... XXX 1178746254562
    192.168.174.1:1758 Received: [dst: 224.0.0.150:5555, src: 192.168.174.1:1761 (1 headers), size = 21 bytes]
    192.168.174.1:1758 Sending... XXX 1178746259562
    192.168.174.1:1758 Received: [dst: 224.0.0.150:5555, src: 192.168.174.1:1764 (1 headers), size = 21 bytes]
    192.168.174.1:1758 Sending... XXX 1178746264562
    192.168.174.1:1758 Received: [dst: 224.0.0.150:5555, src: 192.168.174.1:1755 (1 headers), size = 21 bytes]
    192.168.174.1:1758 Sending... XXX 1178746269562
    192.168.174.1:1758 Received: [dst: 224.0.0.150:5555, src: 192.168.174.1:1758 (1 headers), size = 21 bytes]
    192.168.174.1:1758 Sending... XXX 1178746274562
    192.168.174.1:1758 Received: [dst: 224.0.0.150:5555, src: 192.168.174.1:1761 (1 headers), size = 21 bytes]
    192.168.174.1:1758 Sending... XXX 1178746279562
    192.168.174.1:1758 Received: [dst: 224.0.0.150:5555, src: 192.168.174.1:1764 (1 headers), size = 21 b

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  2. #2
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Hallo Tom,

    was ist hier Client und was Server?


    Vg Erdal
     

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo,

    das ist ein Peer to Peer Netz Eine Nachricht die von einem "Peer" in den Channel geschickt wird, wird (in diesem Beispiel) auch von jedem Empfangen.

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  4. #4
    flashray flashray ist offline Mitglied Rubin
    Registriert seit
    Sep 2005
    Ort
    Mannheim
    Beiträge
    1.325
    Asso !

    Ein CS Beispiel würde mich interessieren !


    Vg Erdal
     

  5. #5
    jeipack jeipack ist offline Mitglied Brokat
    Registriert seit
    Feb 2007
    Beiträge
    391
    Hi Tom
    224.0.0.0 ist ja der Multicast Bereich. Heist dass, dass bei dir im Netz kein Server mit der Addr 224.0.0.150 vorhanden ist?
    Und wenn jetzt ein weiterer Client den Channel auf 224.0.0.151 aufbauen würde, dann würde er die Packete des ersten Clients gar nicht berücksichtigen?

    Und wie würde das aussehen, wenn man sowas übers Internet betreiben will? Multicast wird dort ja eh nicht weitergeroutet, oder?


    Sorry für die Grundlagenfragen, aber ihrgenwie blick ich da gerade nicht ganz durch.


    Gruss & Danke
    jeipack
     

  6. #6
    Nemos Nemos ist offline Grünschnabel
    Registriert seit
    Dec 2009
    Beiträge
    4
    Hallo Thomas,

    danke für deine Post's..

    Weißt du zufährlich wie kann ich Host spezifischen Informationen andseren Teilnehmen mitteilen!?
    Z.B Ich möchte das jeder Host seine Name (HOST1, HOST2... etc.) anderen Teilnehmen mitteilt.
    Muss ich ein Message dafür schreiben?

    Momentan führe ich eine List von allen Hosts über ReceiverAdapter -> viewAccepted(View newView){ }

    Aber die Informationen aus Addresse reichen mir nich aus [ip : port]

    Danke für deine Hilfe!

    Dima..
    Geändert von Nemos (15.03.10 um 15:38 Uhr)
     

Ähnliche Themen

  1. Kleines Beispiel zur Verwendung der Derby DB in Java 6
    Von Thomas Darimont im Forum Java
    Antworten: 15
    Letzter Beitrag: 12.08.10, 11:58
  2. Kleines Beispiel zum Thema Java 3D
    Von Thomas Darimont im Forum Java
    Antworten: 1
    Letzter Beitrag: 13.11.08, 19:35
  3. Kleines Beispiel zur JExcel API
    Von Thomas Darimont im Forum Java
    Antworten: 3
    Letzter Beitrag: 11.09.07, 09:42
  4. Kleines Beispiel zu RMI over IIOP
    Von Thomas Darimont im Forum Java
    Antworten: 0
    Letzter Beitrag: 24.05.05, 19:10