Java: Multithreading & UDP-Socket-Programmierung

Ich bin neu auf multithreading & socket-Programmierung in Java. Ich würde gerne wissen, was ist die beste Art der Umsetzung 2 threads - einen für den Empfang eine Steckdose und einen für das senden einer Steckdose. Wenn das, was ich versuche zu tun, klingt absurd, pls lassen Sie mich wissen, warum! Der code ist weitgehend inspiriert von Sonne tutorials online.Ich möchte mit Multicast-sockets, so dass ich arbeiten kann mit einer multicast-Gruppe.

class Server extends Thread
{

    static protected MulticastSocket socket = null;
    protected BufferedReader in = null;
    public InetAddress group;

    private static class Receive implements Runnable
    {

        public void run()
        {
            try
            {
                byte[] buf = new byte[256];
                DatagramPacket pkt = new DatagramPacket(buf,buf.length);
                socket.receive(pkt);
                String received = new String(pkt.getData(),0,pkt.getLength());
                System.out.println("From server@" + received);          
                Thread.sleep(1000);
            }
            catch (IOException e)
            { 
                System.out.println("Error:"+e);
            }   
            catch (InterruptedException e)
            { 
                System.out.println("Error:"+e);
            }   

        }

    }


    public Server() throws IOException
    {
        super("server");
        socket = new MulticastSocket(4446);
        group = InetAddress.getByName("239.231.12.3");
        socket.joinGroup(group);
    }

    public void run()
    {

        while(1>0)
        {   
            try
            {
                byte[] buf = new byte[256];
                DatagramPacket pkt = new DatagramPacket(buf,buf.length);        
                //String msg = reader.readLine();
                String pid = ManagementFactory.getRuntimeMXBean().getName();
                buf = pid.getBytes();
                pkt = new DatagramPacket(buf,buf.length,group,4446);
                socket.send(pkt);
                Thread t = new Thread(new Receive());
                t.start();

                while(t.isAlive())
                { 
                    t.join(1000);
                }
                sleep(1);
            }
            catch (IOException e)
            { 
                System.out.println("Error:"+e);
            }   
            catch (InterruptedException e)
            { 
                System.out.println("Error:"+e);
            }   

        }
        //socket.close();
    }

    public static void main(String[] args) throws IOException
    {
        new Server().start();
        //System.out.println("Hello");
    }

}
Was ist dein Endziel?
Ich fixierte Ihre Formatierung, aber man sollte Bearbeiten Sie die Klasse Namen... machen Sie beginnen mit einem Großbuchstaben. Es ist schmerzhaft zu Lesen, Ihre Codes, wenn Sie Ihre Klassen-Namen beginnen mit Kleinbuchstaben.
Mein Ziel ist, die Umsetzung bestimmter Protokolle in einem verteilten system @Lirik: tut mir Leid wegen dem Klasse Namen! Ich fixierte Sie jetzt.
Gut zu beherzigen, eine Antwort, die verwendet ExecuterService beim Umgang mit udp-sockets

InformationsquelleAutor Ravi | 2010-04-21

Schreibe einen Kommentar