001    package net.minecraft.client.multiplayer;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import java.io.IOException;
006    import java.net.DatagramPacket;
007    import java.net.InetAddress;
008    import java.net.MulticastSocket;
009    import java.net.SocketTimeoutException;
010    
011    @SideOnly(Side.CLIENT)
012    public class ThreadLanServerFind extends Thread
013    {
014        /** The LanServerList */
015        private final LanServerList localServerList;
016    
017        /** InetAddress for 224.0.2.60 */
018        private final InetAddress broadcastAddress;
019    
020        /** The socket we're using to receive packets on. */
021        private final MulticastSocket socket;
022    
023        public ThreadLanServerFind(LanServerList par1LanServerList) throws IOException
024        {
025            super("LanServerDetector");
026            this.localServerList = par1LanServerList;
027            this.setDaemon(true);
028            this.socket = new MulticastSocket(4445);
029            this.broadcastAddress = InetAddress.getByName("224.0.2.60");
030            this.socket.setSoTimeout(5000);
031            this.socket.joinGroup(this.broadcastAddress);
032        }
033    
034        public void run()
035        {
036            byte[] var2 = new byte[1024];
037    
038            while (!this.isInterrupted())
039            {
040                DatagramPacket var1 = new DatagramPacket(var2, var2.length);
041    
042                try
043                {
044                    this.socket.receive(var1);
045                }
046                catch (SocketTimeoutException var5)
047                {
048                    continue;
049                }
050                catch (IOException var6)
051                {
052                    var6.printStackTrace();
053                    break;
054                }
055    
056                String var3 = new String(var1.getData(), var1.getOffset(), var1.getLength());
057                System.out.println(var1.getAddress() + ": " + var3);
058                this.localServerList.func_77551_a(var3, var1.getAddress());
059            }
060    
061            try
062            {
063                this.socket.leaveGroup(this.broadcastAddress);
064            }
065            catch (IOException var4)
066            {
067                ;
068            }
069    
070            this.socket.close();
071        }
072    }