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 }