    001package net.minecraft.client.multiplayer;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.io.IOException;
    006import java.net.DatagramPacket;
    007import java.net.InetAddress;
    008import java.net.MulticastSocket;
    009import java.net.SocketTimeoutException;
    010
    011@SideOnly(Side.CLIENT)
    012public 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}