java局域网广播的问题
为什么我的接收广播数据的程序接收不到广播的数据呢?
我是在本机同时测试,广播和接收端的。
是不是我广播地址有问题!
大家帮我看看.
代码如下:
广播端:
import java.net.*;
public class broadcast extends Thread{
public static MulticastSocket broad;
public static String mesg="hello this is test broadcast!";
public static byte[] data;
public static DatagramPacket packet=null;
public static InetAddress grup;
public static int count=0;
public broadcast()
{
try{
broad=new MulticastSocket(64000);
grup=InetAddress.getByName("224.0.0.1");
broad.joinGroup(grup);
broad.setTimeToLive(1);
data=mesg.getBytes();
packet=new DatagramPacket(data,data.length,grup,64000);
}catch(Exception e){System.out.println("server Error: "+ e);System.exit(1); }
start();
}
public void run()
{
try
{
while(true)
{ //待广播的数据包。
broad.send(packet); //广播数据包。
System.out.println("broadcast: "+count++);
sleep(50);
if(count>50)break;
}
broad.close();
}
catch(Exception e)
{
}
}
public static void main(String[] args)
{
new broadcast();
}
}
接收广播端:
import java.net.*;
public class geter extends Thread{
public static MulticastSocket broad;
public static byte[] data=new byte[32768];
public static DatagramPacket packet=null;
public static String mesg="";
public static int count=0;
public geter()
{
try{
broad=new MulticastSocket(64000);
packet = new DatagramPacket(data,data.length,
InetAddress.getByName("224.0.0.1"),64000);
}catch(Exception e){System.out.println(e.toString());System.exit(1);}
start();
}
public void run()
{
try
{
while(true)
{
if(count>40)break;
broad.receive(packet);
mesg=new String(packet.getData(),0,packet.getData().length);
System.out.println(mesg+" :"+count++);
}
broad.close();
}catch(Exception e){ System.out.println(e.toString());}
}
}