    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    }