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}